我装的是mysql 8.0.28,装其他版本,改名命令后面的版本即可
docker拉取镜像
sudo docker pull mysql:8.0.28
启动容器, /mydata目录是我提前在服务器上创建的文件夹
-p 指定在容器内部的端口 以及对外暴露的端口,冒号前面的是宿主机的端口,后面的是容器的端口,如果是3307:3306则代表把宿主机的3307端口映射给容器的3306,对外访问连接时则需要通过3307才能连接到容器的mysql
--name 设置服务器名称
--restart 是否运行跟随docker一起启动
--network 容器之间内部通信网络,默认就是bridge,可以不写此命令
-v 挂载命令 将容器中的配置挂载在外部来方便修改,其中有一些mysql的配置文件挂载,数据文件夹等
-d 指定版本
-e 修改配置
-e 指定root的密码为Abc?123456, 可根据自己需求更改为其他
docker run -p 3306:3306 --name mysql --restart=always --network bridge -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=Abc?123456 -d mysql:8.0.28
查看容器是否启动正常, docker ps -a执行后看到下图所示,则代表启动成功,如果图片中STATUS为Exited或者一直Restarting,则需要寻找原因,可使用docker logs
docker ps -a
修改配置文件,由于启动容器加了挂载配置文件到宿主机 -v /mydata/mysql/conf:/etc/mysql/conf.d, 所以我们可以直接在宿主机/mydata/mysql/conf对mysql配置文件进行处理,会同步到docker容器里,我们打开mysql.cnf文件进行配置增加,如果该文件存在则编辑,不存在则新增,都是会同步到容器中
cd /mydata/mysql/conf
sudo vi mysql.cnf
保存配置文件后,重启mysql即可
docker restart mysql
接下来就跟平时装mysql一样,创建一个支持远程访问的账号等,首先进入容器内部,进入后,我们看到就跟正常linux服务器一样的构造
docker exec -it mysql /bin/bash
进入容器后,我们再进入mysql,然后执行mysql -uroot -p,再输入设置的密码即可
mysql -uroot -p
创建一个user的账号, xxxxxxxx为密码
create user 'user'@'%'identified by 'xxxxxxxx';
grant all privileges on *.* to 'user'@'%' with grant option;
更改加密方式,可提供可视化工具链接
alter user 'user'@'%' identified with mysql_native_password;
alter user 'user'@'%' identified by 'xxxxxxxxx' password expire never;
刷新
flush privileges;
退出mysql后,再退出容器,重启mysql
Ctrl + d
exit
docker restart mysql
此时应该是可以使用远程可视化工具连接mysql了,如果还是连接错误,查看防火墙是否开启mysql的默认端口3306,防火墙 firewalld 规则请自行百度,若本教程有错误地方,请指正,谢谢!好了,看完了,赶紧跟着教程动起来吧