Docker Mysql无法通过套接字连接到本地MySQL服务器

时间:2019-02-10 07:20:07

标签: docker

我正在使用以下命令运行mysql docker容器。

docker container run -it --name mysql-test -e MYSQL_ROOT_PASSWORD=secret mysql bash

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

mysql -uroot -psecret

它给了我下面的错误。

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

如果我在下面进行操作,有时会奏效,但并非总是如此。

touch /var/run/mysqld/mysqld.sock

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

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

我在这里做什么错了?

2 个答案:

答案 0 :(得分:0)

Connect to mysql in a docker container from the host可能会有帮助。

  1. mysql命令尝试通过mysqld.sock进行连接,但是您的mysql服务器在容器内运行,因此此处没有.sock文件。您可以尝试将其安装到主机上。
  2. 您触摸.sock文件,当然它没有任何作用,也许您想了解什么是sock文件:)

答案 1 :(得分:0)

如果您在使用 docker 容器时在登录 mysql-server 时碰巧遇到“Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)”错误:< /p>

查看/etc/mysql/my.cnf中socket文件的路径

检查/var/run/mysqld/目录下是否存在mysqld.sock和mysqld.pid文件。

如果没有,将这些文件创建为:

touch /var/run/mysqld/mysqld.sock
touch /var/run/mysqld/mysqld.pid
chown -R mysql:mysql /var/run/mysqld/mysqld.sock
chown -R mysql:mysql /var/run/mysqld/mysqld.sock
chmod -R 644 /var/run/mysqld/mysqld.sock

现在重新启动mysql-server:

service mysql-server restart

现在,尝试再次登录到 mysql-server。