当前位置: 首页 > 知识库问答 >
问题:

PhpStorm-如何通过Docker连接到MySQL

赵晨
2023-03-14

我正在使用PhpStorm 2018.3.4,Docker,MySQL和Ubuntu。我试图配置MySQL与Docker容器network_mysql不成功。

首先,我尝试了以下配置:

它给了我这个错误:

然后,我试了一下:

这个给了我另一个错误。

我错过什么了吗?有没有其他地方我必须配置一些东西?

docker ps输出:

这里docker网络ls

对于命令docker检查network_mysql,这里是描述的链接:https://pastebin.com/9LmeAkc8

下面是docker-compose.yml配置:https://pastebin.com/DB4Eye4y

我试图将-“3306:3306”添加到wex\u服务器代理部分,但没有成功。

要修改的文件是这样的:

https://pastebin.com/TPBQNCDZ

添加端口部分,打开3306端口:),然后它就可以工作了。

共有3个答案

穆歌者
2023-03-14

我的解决方案:我将端口从localhost转发到远程:ssh-R 3306:localhost:3306root@remote_host_ip并且连接成功。

贺季同
2023-03-14

对于在docker映像中手动设置mysql的每个人:

很可能您必须配置mysql来接受来自docker创建/用于与主机通信的网络接口(以及端口转发)的传入连接。

在我的例子中,我将以下内容添加到文件末尾的/etc/mysql/my.cnf

[mysqld]
bind-address    = 0.0.0.0

mysql监听所有网络接口。

辛成周
2023-03-14

我注意到您没有映射mysql容器端口。如果您这样做了,您将从docker ps命令中看到这一点:

...   0.0.0.0:3306->3306/tcp       network_mysql

容器network_mysql附加到称为tmp_wex_net的桥接类型网络。这意味着不能通过主机的容器名称访问容器。

看来您正在为堆栈使用docker-compose.yml定义。为了能够从主机访问容器,您需要为此容器使用撰写定义port部分:

serivces:
  mysql:
    ...
    ports:
      - "3306:3306"
    ...

如果您是从docker run开始,那么您可以通过以下方式完成相同的操作:

docker run -p 3306:3306 --name network_mysql --network="tmp_wex_net" -d mysql

然后在PHPStorm中的连接设置的主机名中使用localhost。这样地:

主机:本地主机

港口:3306

数据库:网络

无法连接的原因是,您在连接设置中指定的主机名network_mysql无法解析到您的机器所知道的任何主机。

docker容器的容器名称不是docker主机可以解析的DNS名称。

如果您没有为mysql容器指定任何网络,那么它将连接到默认的网桥网络。如果您创建了一个新的网络,而没有指定类型,它也将默认为桥接驱动程序。

要从主机访问容器,您需要:

  1. 将容器连接到主机网络
  2. 或者从网桥网络上的容器,将端口映射到上面解决方案中建议的主机。然后,您可以使用localhost:

 类似资料:
  • 问题内容: 我想创建以下基础结构流: 使用Docker如何实现? 问题答案: 首先,您需要在要ssh- in的映像中安装SSH服务器。您可以对安装了ssh服务器的所有容器使用基础映像。然后,您只需要运行每个容器,即可将ssh端口(默认为22)映射到主机端口(镜像中的远程服务器)到一个端口。即: 然后,如果可以从外部访问主机的端口52022和53022,则可以使用主机的ip(远程服务器)通过ssh在

  • 我正在通过docker-compose运行MySQL,并试图从主机而不是其他容器连接到它。环境被锁定,我不能创建新的docker网络或绑定一个容器到‘主机’网络,桥是唯一的选择。我可以使用容器的IP地址连接到MySQL实例,但这没有多大用处--我需要使用或。这可能吗?如果是,怎么做? Docker-compose.yml 我可以使用容器的IP进行连接,如下所示: 但无法使用进行连接,如下所示: 其

  • 问题内容: 这是关于如何通过Docker连接到本地服务的更普遍的问题。有在Github上的问题类似的问题在这里,似乎并未有任何决议。我真正想要的是能够针对本地开发MySQL服务器在本地进行开发,然后一旦准备好进行部署,就可以针对新创建的部署候选docker映像进行本地测试。 理想情况下,两者都可以从同一位置获取设置,所以我可以放。这似乎是一个典型的用例。目前有这种可能吗? 我正在将Boot2Doc

  • 问题内容: 我的django项目无法连接到postgres数据库容器。我该怎么办? 它在命令时崩溃。我知道docker run命令会创建一个新的容器,但是在docker-compose.yml中,bash包含了更多命令。它应该工作,不是吗? 我的: 我的: : 输出: 我使用:Windows 10 Docker 17.03.0-ce-win1-(10296)docker-compose版本1.11

  • 我有一个使用LocalDB并在Windows PC上运行良好的应用程序,但是我试图通过我的mac运行它......我正在努力将应用程序连接到位于docker上的mySQL服务器。我一直在遵循其他指南,例如(https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver1

  • 我正在从Docker运行Elasticsearch实例。该图像来自jHipster docker hub repo:jHipster/jHipster elasticsearch/-我使用图像v1.3.2,因为我需要elasticsearch 2.4.0(与项目的Spring Boot版本一致)。 我正在启动ES容器以及Logstash和Kibana图像,使用。以下是启动ES容器的设置: 所以我用