如何在Docker MySQL映像上允许外部连接

时间:2019-05-26 07:32:29

标签: mysql docker mysql-workbench

我正在尝试对我创建的Docker MySQL映像进行root访问。我为ROOT_PASSWORD和DATABASE放置了环境变量,因此我确定密码确实存在,并且能够使用命令行访问root。问题在于尝试使用MySQLWorkbench或SequelPro访问root。我将主机名设置为localhost,用户设置为root,端口设置为3307(运行命令创建数据库时,我已将此端口映射)。尝试连接时出现错误

“您的连接尝试失败,用户'root'到位于localhost:3307的MySQL服务器:   不允许主机连接到该MySQL服务器”

我尝试将端口号更改为3306,将IP也更改为127.0.0.1,但错误不会消失。我检查了一个GitHub帖子,该帖子建议root用户应将“%”作为主机,并且可以通过更改我的bind-address来实现。问题是我找不到mysql.cnf配置文件...我什至都不认为我的系统上存在该文件

https://i.imgur.com/eeNdg4J.png

1 个答案:

答案 0 :(得分:0)

一种获取访问权限的肯定方法是:

docker inspect mysql_container_name

查找IP地址。

然后您可以使用类似的内容:

mysql -u root -p -h <docker container ip address>

其他一些注意事项:

  • 默认的mysql端口是3306,因此您还应该仔细检查一下您是否没有将它向后映射。
  • 环境变量称为MYSQL_ROOT_PASSWORD而不是ROOT_PASSWORD
  • 您可能需要提供绑定并监听网络接口而不是套接字的配置
  • 配置文件位于docker容器内部。您可以将卷映射为使用本地文件:

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/