1、拉取镜像,不指定版本号,默认拉最新版
//拉取mysql镜像
docker pull mysql
//查看镜像
docker images
2、创建一个mySQL容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD="123456" -d mysql
3、进入mysql容器,指定配置文件在linux服务器挂载的路径
//进入mysql容器
docker exec -it mysql bash
//查看配置文件位置
mysql --help | grep my.cnf
//退出容器
exit
//创建linux服务器上配置文件路径与数据库存储路径
mkdir -p /home/data/mysql/conf && mkdir -p /home/data/mysql/data
//将容器内的配置文件复制到linux服务器
docker cp mysql:/etc/mysql/my.cnf /home/data/mysql/conf/my.cnf
//修改配置文件
vim /home/data/mysql/conf/my.cnf
lower_case_table_names=1
4、移除旧的mysql容器,创建新的mysql容器
//查看mysql容器的id
docker ps
//停止正在运行的mysql容器
docker stop 521a1feee7f5
//删除mysql容器
docker rm 521a1feee7f5
//重新创建容器
docker run --name mysql -p 3306:3306 -v /home/data/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /home/data/mysql/data:/var/lib/mysql -v /home/data/mysql/log:/logs -e MYSQL_ROOT_PASSWORD=123456 --restart=always -d mysql:8.0.27 --lower_case_table_names=1
-e MYSQL_ROOT_PASSWORD 设置mysql密码
-v /home/data/mysql/conf/my.cnf:/etc/mysql/my.cnf 挂载配置文件路径
-v /home/mysql/:/var/lib/mysql 挂载磁盘实现数据持久化
–restart=always 容器异常停止后自动重启
–net halo-net: 将该容器加入到 halo-net 网络,连接到 halo-net 网络的任何其他容器都可以访问 some-mysql容器上的所有端口。
–lower_case_table_names=1 忽略大小写,docker mysql默认区分大小写的
–restart=always 容器异常停止后自动重启
–restart=unless-stopped 除非手动停止否则自动重启
-d 后台运行
mysql:8.0.27 mysql版本
5、进入容器,修改远程连接方式
//进入容器
docker exec -it mysql /bin/bash
//登录
mysql -u root -p
//修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
//更新一下用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
//查看是否区分大小写
show variables like 'lower_case_%';
Q.E.D.