我正在尝试获取我创建的Docker MySQL镜像的root访问权限。我为ROOT_PASSWORD和DATABASE放置了环境变量,这样我就可以确保密码确实存在,并且可以使用命令行访问root。问题在于尝试使用MySQLWorkbench或SequelPro访问根目录。我将主机名设置为localhost,用户设置为root,端口设置为3307(在运行创建数据库的命令时,我已经Map了这个端口)。当我尝试连接时,我得到一个错误
“用户'root'连接到位于localhost:3307的MySQL服务器的尝试失败:不允许主机连接到此MySQL服务器”
我试过将端口号更改为3306,将IP更改为127.0.0.1,但错误并没有消失。我查看了GitHub的一篇文章,建议root用户使用“%”作为主机,这可以通过改变我的绑定地址来实现。问题是我找不到mysql.cnf配置文件...我甚至不认为有一个存在于我的系统
https://i.imgur.com/eeNdg4J.png
2条答案
按热度按时间wvyml7n51#
允许外部连接到基于docker的mysql的最简单方法是传递一个变量,如下所示:
使用
MYSQL_ROOT_HOST:"%"
允许从任何IP进行远程连接。对于已定义的IP,将%替换为外部IP地址。更多信息https://devopsbuild.com/docker-host-is-not-allowed-to-connect-to-this-mysql-server/
jchrr9hc2#
获得访问权限的可靠方法是:
找到IP地址。
然后你可以使用类似于:
还有几个注意事项:
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
查看更多信息:https://docs.docker.com/samples/library/mysql/