【问题标题】:How to open MySQL database from docker container in my local HeidiSQL如何从本地 HeidiSQL 中的 docker 容器打开 MySQL 数据库
【发布时间】:2019-02-24 13:11:40
【问题描述】:

我用

运行 centos/mysql-57-centos7 容器
docker run -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7

而且效果很好

ae0b9060f99c        centos/mysql-57-centos7   "container-entrypoin…"   16 minutes ago      Up 16 minutes       3306/tcp            angry_blackwell

但我不知道如何将它与我的 HeidiSQL 连接,我看到容器 ip 与

docker inspect -f <ContainerID>  //172.17.0.2

我尝试使用以下登录名打开:

用户:root,通过:root,主机名/ip:172.17.0.2 端口:3306 但我得到:无法连接到“172.17.0.2 (10060)”上的 MySQL 服务器

【问题讨论】:

  • centos/mysql-57-centos7 docker hub页面可以看到,运行容器时用户名/密码可以作为环境变量传递,例如:docker run -d --name mysql_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 ...
  • 是的,我使用 root 更改了它们,并使用我的设置运行它。在我看来,我无法连接,因为 centos 未配置为为不同的 ips/机器提供服务,但我不知道如何使其可用于我的电脑...

标签: mysql docker centos heidisql


【解决方案1】:

你需要转发一个端口 “docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7” 然后连接到 localhost:3306。

【讨论】:

  • 这并不完全正确(至少对于 linux 而言)。如果我们谈论的是同一台主机,您不必publish 一个端口。在 linux 上,默认桥接网络将 172.17.0.1 分配给您的主机,因此任何 IP 为 172.17.0.x 的容器都可以直接访问。也许OP应该添加正在使用的平台......
  • 172.17.0.0/16 地址 (a) 很难找到,并且 (b) 不能在不同的主机上工作。您不需要它们,并且可能永远不应该使用它们。在同一主机上,使用 localhost (正如这个答案所暗示的那样);从其他容器,使用容器间 DNS;从其他主机,使用主机的 DNS 名称或 IP 地址。
  • 是的,大卫·梅兹,没错!谢谢,我用 localhost 登录了! :)
【解决方案2】:

默认情况下,MySQL 只允许在 localhost 上进行 root 登录。 我的建议是为您的远程访问创建一个新用户: https://dev.mysql.com/doc/refman/8.0/en/creating-accounts.html

【讨论】:

  • 是啊!谢谢@Philoupe,这是正确的解决方案,我更改了它们并立即登录!老实说,我对这个发行版还有其他问题,我用 linuxserver/mysql 映像对其进行了更改。我使用主机名登录:localhost,端口:3306 和我的自定义用户和密码(不同于 root)! :)
  • 仅供参考,由于用户权限存在许多问题,我更改了 linux,这里我只是使用 root 密码使用 'mysql -u root -p' 登录 linux,我可以控制一切! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2023-03-19
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
相关资源
最近更新 更多