docker部署MySQL8时出现的问题

1. docker启动MySQL时参数设置的密码进入容器后无法登录

1.1启动命令

docker run --name mysql -d -p 3306:3306 --restart unless-stopped
-v /mydata/mysql/log:/var/log/mysql
-v /mydata/mysql/data:/var/lib/mysql
-v /mydata/mysql/conf:/etc/mysql
-v /var/lib/mysql-files:/var/lib/mysql-files
-e MYSQL_ROOT_PASSWORD=123456
mysql:latest
--secure-file-priv=/var/lib/mysql-files

  

1.2修改mysql.cnf文件

[mysqld]
skip-host-cache
skip-name-resolve
skip-grant-tables   //免密登录
docker restart mysql(或是容器id)   重启服务

 

1.3进入容器

docker exec -it 容器id bash

mysql -uroot -p   /连续两次回车

ALTER USER 'root'@'localhost' IDENTIFIED BY 'passwd';  /设置本地连接

 

1.4 验证

docker exec -it 容器id bash

mysql -uroot -ppasswd 

成功登录

  

2.MySQL容器启动后外部服务无法访问问题

2.1 进入容器

docker exec -it 容器id bash

mysql -uroot -ppasswd

 

2.2 创建用户

docker exec -it 容器id bash
mysql -uroot -ppasswd
CREATE USER 'root'@'%' IDENTIFIED BY 'passwd';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

看了很多文章大多都是使用alter user的方式设置,但MySQL8引入了一些更严格的安全策略。

在MySQL 8 中,默认情况下,‘root’@'%'用户被视为具有本地访问权限,而不是远程访问权限。因此,尝试使用 ALTER USER 命令来更改 'root'@'%' 用户的属性会导致失败。

posted @ 2023-06-19 17:05  平安里  阅读(237)  评论(0编辑  收藏  举报