简体   繁体   English

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

[英]Docker Mysql Can't connect to local MySQL server through socket

I'm using below command to run the mysql docker container.我正在使用以下命令来运行 mysql docker 容器。

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

Then I tried to connect to mysql inside docker container using below command.然后我尝试使用以下命令连接到 docker 容器内的 mysql。

mysql -uroot -psecret

It gives me below error.它给了我以下错误。

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

If I do below then sometimes it works but not all time.如果我在下面这样做,那么有时它会起作用,但并非总是如此。

touch /var/run/mysqld/mysqld.sock

Then I tried to run the container in detach mode but it also gave me the same error.然后我尝试以分离模式运行容器,但它也给了我同样的错误。

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

What am I doing wrong here?我在这里做错了什么?

This Connect to mysql in a docker container from the host may help. 从主机连接到 docker 容器中的 mysql可能会有所帮助。

  1. mysql command try to connect via mysqld.sock, but your mysql server are running inside a container, so no .sock file here. mysql 命令尝试通过 mysqld.sock 连接,但您的 mysql 服务器在容器内运行,因此此处没有 .sock 文件。 You can try to mount it to the host.你可以尝试挂载到主机上。
  2. you touch a .sock file, ofcourse it don't make any thing work, maybe you would like to understand what is a sock file :)您触摸 .sock 文件,当然它不会使任何事情起作用,也许您想了解什么是 sock 文件 :)

If you happen to get “Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)” errors in logging in to mysql-server while working on docker containers:如果您在使用 docker 容器时登录 mysql-server 时碰巧遇到“Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)”错误:

check the path of socket file in /etc/mysql/my.cnf查看/etc/mysql/my.cnf中socket文件的路径

check if mysqld.sock and mysqld.pid file is present in /var/run/mysqld/ directory or not.检查 /var/run/mysqld/ 目录中是否存在 mysqld.sock 和 mysqld.pid 文件。

If not, create these files as:如果没有,请将这些文件创建为:

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

Now restart the mysql-server as:现在重新启动 mysql-server 为:

service mysql-server restart

Now, trying logging again in to mysql-server.现在,尝试再次登录到 mysql-server。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 带有 docker 的 Mysql:无法通过套接字连接到本地 MySQL 服务器 - Mysql with docker: Can't connect to local MySQL server through socket R Docker:无法通过socket连接到本地MySQL服务器 - R Docker: Can't connect to local MySQL server through socket Docker无法通过socket连接到本地MySQL服务器 - Docker can't connect to local MySQL server through socket mySQL Docker“ ERROR 2002(HY000):无法通过套接字连接到本地MySQL服务器” - mySQL Docker “ERROR 2002 (HY000): Can't connect to local MySQL server through socket” 在 Docker 中安装 MySQL 失败并显示错误消息“无法通过套接字连接到本地 MySQL 服务器” - Installing MySQL in Docker fails with error message "Can't connect to local MySQL server through socket" 无法通过Docker映像中的套接字错误连接到本地MySQL服务器 - Can't connect to local MySQL server through socket error in Docker Image Docker无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)Ubuntu - Docker Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Ubuntu Docker容器bash无法通过套接字连接到本地MySQL服务器 - Docker container bash can't connect to local MySQL server through socket 无法通过Travis CI上的套接字连接到本地MySQL服务器 - Can't connect to local MySQL server through socket on Travis CI docker 容器内的 mysql 说“无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器” - mysql inside a docker container says “Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' ”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM