创建 Docker 网络后,我在 Docker 容器中运行了 mysql。
docker network create --subnet=172.19.0.0/16 网络名称
docker run -p 3306:3306 --net 网络名称 --ip 172.19.0.13 -e MYSQL_ROOT_PASSWORD=密码 -d
然后当我尝试使用命令连接到本地的 mysql 时
mysql -uroot -p
,我收到错误(错误 2002 (HY000): 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2 )
)
然后我成功使用命令mysql -u root -p -h 172.19.0.13
我以为我将本地主机端口 3306 与 docker 容器的 3306 端口连接起来。 为什么无法通过localhost端口连接mysql?
最佳答案
您可以使用 tcp 套接字或 unix 套接字连接到 mysql。 当你在远程时,你总是使用 tcp socket 。 当你是本地mysql客户端时更喜欢socket。
在你的情况下,你需要知道 mysql 是 unix 套接字。 你可以使用:
netstat -npl
当 mysql 在 Docker 容器中运行时,您必须在容器内才能连接到本地主机。
如果您是本地人:
- mysql -u root -p -h 127.0.0.1 将强制使用 tcp 套接字
- mysql -u root -p -h localhost 将使用 unix 套接字
关于mysql - 连接到在docker中运行的mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029022/