mysql - 如何在 Docker MySQL 镜像上允许外部连接

标签 mysql docker mysql-workbench

我正在尝试获得对我创建的 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 配置文件...我什至认为我的系统上不存在该配置文件

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

最佳答案

允许外部连接到基于 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/

相关文章:

mysql - 使用 MySQL : Display all of the Column_Name in upper case, 按字母顺序排序,不重复

innodb - 除了 mysqldump 之外,是否还需要保存 InnoDB 中的任何二进制文件?

mysql - "I want to compare the dates of second month"显示二月的所有日期(02)

mysql - 总计应该去规范化吗?

mysql - 这个 MySQL 存储函数有什么问题?

mysql - 无法在 MySql 工作台中删除模式

mysql - 相关元素的 ActiveRecord 查询

docker - docker 容器如何可靠地表明它们不仅在运行,而且已经准备就绪?

azure - Gitlab 管道作业 token 失败

angular - 在bitbucket管道上运行e2e的麻烦