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'@'%'
用户的属性会导致失败。