第一步:在hub.docker.com上搜索mysql镜像
第二步:拉取指定版本的MySQL
docker 拉取MySQL 指定版本8.0.23
docker pull mysql:8.0.23
第三步:检查MySQL镜像
docker images
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 0e901e68141f 8 months ago 142MB
mysql 5.7 2a0961b7de03 8 months ago 462MB
minio/minio latest e31e0721a96b 13 months ago 406MB
wurstmeister/kafka latest 2dd91ce2efe1 13 months ago 508MB
zookeeper latest 36c607e7b14d 14 months ago 278MB
rabbitmq management 6c3c2a225947 14 months ago 253MB
mysql 8.0.23 cbe8815cbea8 22 months ago 546MB
elasticsearch 7.6.2 f29a1ee41030 2 years ago 791MB
delron/fastdfs latest 8487e86fc6ee 4 years ago 464MB
[root@localhost ~]#
第四步:启动运行MySQL镜像 (docker run 用于启动一个容器)
docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.23
温馨提示:使用mkdir -p 创建MySQL服务依赖配置文件夹。
mkdir -p /usr/local/docker/mysql/mysql-files
mkdir -p /usr/local/docker/mysql/conf
mkdir -p /usr/local/docker/mysql/logs
mkdir -p /usr/local/docker/mysql/data
温馨提示:如果安装MySQL容器过程中失败了,则可通过docker ps 查看以前的容器,假如已存在,则通过docker rm 镜像id 删除再重新安装即可。
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c3d38b948ba zookeeper "/docker-entrypoint.…" 6 months ago Up 9 days 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp zookeeper
62233dfad35b minio/minio "/usr/bin/docker-ent…" 6 months ago Up 9 days minio-server
[root@localhost ~]#
第五步:停止mysql服务(可选)
执行完第四个步骤(启动运行mysql镜像),mysql就会自动启动了,假如需要停止这个
服务可以执行:
docker stop mysql
第六步:启动mysql服务
假设mysql服务没有正常启动运行,但mysql容器是存在的,可以通过如下方式启动mysql。
docker start mysql
假设希望查看mysql启动时的日志,可以执行 docker container logs mysql 这个指令。
第七步:查看docker启动的服务
docker ps
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f81aa5f48427 mysql:8.0.23 "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
1c3d38b948ba zookeeper "/docker-entrypoint.…" 6 months ago Up 9 days 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp zookeeper
62233dfad35b minio/minio "/usr/bin/docker-ent…" 6 months ago Up 9 days minio-server
[root@localhost ~]#
第八步:进入容器 (退出容器用exit)
docker exec -it mysql bash
第九步:登陆(默认密码root),一定要先进入mysql容器。
mysql -uroot -proot
第十步:设置mysql开机自启动(可选)
docker update mysql --restart=always
docker restart mysql
第一步:关闭linux宿主机的防火墙 (假如直击连接),命令忘了可以通过搜索引擎查。
systemctl stop firewalld.service
拓展:查看防火墙状态
systemctl status firewalld.service
第二步:重启docker
systemctl restart docker
第三步:启动mysql
docker start mysql
问题描述:
1251-client does not support authentication protocol requesred by server;consider upgrading MySQL Client
解决方案一:
进入mysql容器内部
docker exec -it mysql bash
进入mysql
mysql -u root -p root
使用mysql数据库
use mysql
查看用户信息
备注:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码
select host,user,plugin,authentication_string from mysql.user;
修改用户密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
更新user为root,host为% 的密码为123456
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
解决方案二:
进入mysql容器内部
docker exec -it mysql bash
进入mysql
mysql -u root -p root
使用mysql数据库
use mysql
创建用户zzg 并指定密码123456
create user 'zzg'@'%' identified by '123456';
为zzg 用户授予管理员权限
grant all privileges on *.* to 'zzg'@'%' with grant option;
刷新权限
flush privileges
修改用户zzg 的密码,并指定密码存储方式
alter user 'zzg'@'%' identified with mysql_native_password by '123456';