Docker Mysql无法通过socket连接本地MySQL服务器

jon*_*rya 8 docker

我正在使用下面的命令来运行 mysql docker 容器。

docker container run -it --name mysql-test -e MYSQL_ROOT_PASSWORD=secret mysql bash
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用以下命令连接到 docker 容器内的 mysql。

mysql -uroot -psecret
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Run Code Online (Sandbox Code Playgroud)

如果我在下面这样做,那么有时它会起作用,但并非总是有效。

touch /var/run/mysqld/mysqld.sock
Run Code Online (Sandbox Code Playgroud)

然后我尝试以分离模式运行容器,但它也给了我同样的错误。

docker container run -d -p 3306:3306 --name mysql-test -e MYSQL_ROOT_PASSWORD=secret mysql
docker exec -it mysql-test bash
mysql -uroot -p
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

小智 2

从主机连接到 docker 容器中的 mysql可能会有所帮助。

  1. mysql 命令尝试通过 mysqld.sock 连接,但是您的 mysql 服务器在容器内运行,因此这里没有 .sock 文件。您可以尝试将其挂载到主机上。
  2. 你触摸了 .sock 文件,当然它不会让任何东西工作,也许你想了解什么是 sock 文件:)