连接到在docker中运行的mysql

时间:2018-06-25 17:35:48

标签: mysql docker

建立docker网络后,我在docker容器中运行了mysql。

docker network create --subnet=172.19.0.0/16 network-name

docker run -p 3306:3306 --net network-name --ip 172.19.0.13 -e MYSQL_ROOT_PASSWORD=password -d

然后当我尝试使用命令在本地连接到mysql时 mysql -uroot -p,我遇到了错误(Error 2002 (HY000): Can't Connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

然后我成功执行了命令mysql -u root -p -h 172.19.0.13

我以为我将localhost端口3306与docker容器的3306端口连接了。 为什么我不能通过本地主机端口连接到mysql?

1 个答案:

答案 0 :(得分:0)

您可以使用tcp套接字或unix套接字连接到mysql。 当您处于远程状态时,请始终使用tcp socket。 当您是本地mysql客户端时,首选套接字。

在您的情况下,您需要知道mysql是unix套接字。 您可以使用:

 netstat -npl

当mysql在docker容器中运行时,您必须位于该容器内部才能连接到localhost。

如果您是本地人:

  • mysql -u root -p -h 127.0.0.1 将强制使用tcp套接字
  • mysql -u root -p -h localhost 将使用unix套接字