我正在尝试获得对我创建的 Docker MySQL 镜像的 root 访问权限。我为 ROOT_PASSWORD 和 DATABASE 设置了环境变量,因此我确信密码确实存在,并且我可以使用命令行访问 root。问题在于尝试使用 MySQLWorkbench 或 SequelPro 访问根目录。我将主机名设置为 localhost,用户设置为 root,端口设置为 3307(我在运行创建数据库的命令时映射了此端口)。当我尝试连接时出现错误
“用户‘root’到 localhost:3307 的 MySQL 服务器的连接尝试失败: 主机不允许连接到此 MySQL 服务器”
我尝试将端口号更改为 3306,将 IP 更改为 127.0.0.1,但错误并未消失。我查了一篇 GitHub 帖子,建议 root 用户应该将“%”作为主机,这可以通过更改我的绑定(bind)地址来实现。问题是我找不到 mysql.cnf 配置文件...我什至认为我的系统上不存在该配置文件
最佳答案
允许外部连接到基于 docker 的 mysql 的最简单方法是传递一个变量,如下所示:
docker run --name=name -p 3306:3306 -v your-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_ROOT_HOST:"%" -d mysql
使用MYSQL_ROOT_HOST:"%"
允许从任何IP进行远程连接。对于定义的 IP,请将 % 替换为您的外部 IP 地址。
了解更多信息https://devopsbuild.com/docker-host-is-not-allowed-to-connect-to-this-mysql-server/
关于mysql - 如何在 Docker MySQL 镜像上允许外部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56311559/