关于docker下mysql安装所遇见的一系列问题

发布时间 2024-01-11 16:00:45作者: 见南山

mysql安装:https://blog.csdn.net/u014576291/article/details/105890286
根据上面那篇博客安装完后,启动mysql失败,TATUS提示> Restarting (1) 15 seconds ago
直接去docker中查看mysql日志docker logs -f mysql
发现没有这个路径,报错信息如下图所示

我使用以下方式解决:
停止容器
docker stop mysql
删除容器
docker rm mysql
在你宿主机随便一个位置创建mysql-files文件夹

编写启动文件,并在启动添加我下方图片红框圈起来的部分-v /mnt/sda1/mysql8.0.20/mysql-files:/var/lib/mysql-files \ 路径请改为你自己的路径
vim mysql8.0.20.sh

点击查看代码
#!/bin/sh
docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \
--restart unless-stopped \
-v /mnt/sda1/mysql8.0.20/mysql:/etc/mysql \
-v /mnt/sda1/mysql8.0.20/logs:/logs \
-v /mnt/sda1/mysql8.0.20/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-v /mnt/sda1/mysql8.0.20/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.20

执行启动文件sh mysql8.0.20.sh
检查容器是否成功启动dockers ps -a

启动成功后进入容器内部对mysql做简单的基础配置,修改密码、修改加密规则、允许远程访问
1、进入mysql容器
docker exec -it mysql /bin/bash
2、进入mysql
mysql -uroot -p
有密码就输入密码,没密码就直接回车
3、使用改表法,让远程能访问mysql依次执行以下命令
use mysql; update user set host = '%' where user = 'root'; flush privileges; select host, user from user
执行完后user表如下图所示

4、修改加密规则
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
5、修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
6、刷新权限
flush privileges;
执行命令的时候可能会遇见ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'这种错误
当遇见这种错误的时候请看你的user表,root后面的host是什么?是%,就用'root'@'%' 是localhost 就用'root'@'localhost'
然后Navicat进行测试