zhangxibin
发布于 2025-09-05 / 1 阅读
0
0

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

mysql服务器启动日志

1Panel-mysql-2vhL  | 2025-09-05 18:27:58+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.4.6-1.el9 started.1Panel-mysql-2vhL  | 2025-09-05 18:27:58+08:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'1Panel-mysql-2vhL  | 2025-09-05 18:27:58+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.4.6-1.el9 started.1Panel-mysql-2vhL  | 2025-09-05T10:27:59.133711Z 0 [System] [MY-015015] [Server] MySQL Server - start.1Panel-mysql-2vhL  | 2025-09-05T10:27:59.328055Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.4.6) starting as process 11Panel-mysql-2vhL  | 2025-09-05T10:27:59.333804Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.1Panel-mysql-2vhL  | 2025-09-05T10:28:01.226359Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.1Panel-mysql-2vhL  | 2025-09-05T10:28:01.898632Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.1Panel-mysql-2vhL  | 2025-09-05T10:28:01.898683Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.1Panel-mysql-2vhL  | 2025-09-05T10:28:02.046873Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock1Panel-mysql-2vhL  | 2025-09-05T10:28:02.047308Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.4.6'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server - GPL.1Panel-mysql-2vhL  | 2025-09-05T10:28:11.005728Z 8 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead

太好了!这个日志完全揭示了真相,而且是个好消息

核心发现:MySQL服务器实际上正在正常运行!

从日志中可以看到关键信息:

  1. InnoDB initialization has ended. - 数据库初始化成功

  2. X Plugin ready for connections. Bind-address: '::' port: 33060 - X插件启动成功(创建了mysqlx.sock)

  3. ready for connections. Version: '8.4.6' socket: '/var/lib/mysql/mysql.sock' port: 3306 - 最重要的信息!MySQL服务器已启动并就绪


问题的根本原因

日志显示:MySQL服务器正在使用不同的socket文件路径!

  • MySQL配置的socket路径: /var/lib/mysql/mysql.sock

  • mysql客户端默认寻找的路径: /var/run/mysqld/mysqld.sock

这两个路径不一致,所以mysql客户端找不到服务器!


解决方案

您有几种简单的方法可以解决这个路径不匹配的问题:

方法一:使用TCP连接(最简单,立即生效)

bash

复制

下载

# 使用TCP/IP协议而不是socket文件连接
mysql -h 127.0.0.1 -u root -p

方法二:使用正确的socket路径连接

bash

复制

下载

# 使用MySQL实际使用的socket路径
mysql --socket=/var/lib/mysql/mysql.sock -u root -p

方法三:创建符号链接(永久解决)

bash

复制

下载

# 创建目录(如果不存在)
mkdir -p /var/run/mysqld

# 创建符号链接,将客户端寻找的路径指向实际的socket文件
ln -sf /var/lib/mysql/mysql.sock /var/run/mysqld/mysqld.sock

# 设置正确的权限
chmod 755 /var/run/mysqld/
chown mysql:mysql /var/run/mysqld/

方法四:修改MySQL配置(最彻底)

编辑MySQL配置文件,让服务器使用客户端期望的socket路径:

bash

复制

下载

# 编辑MySQL配置文件
vi /etc/mysql/my.cnf

# 在 [mysqld] 部分添加或修改 socket 配置
[mysqld]
socket = /var/run/mysqld/mysqld.sock

# 重启MySQL服务使配置生效

您现在应该立即尝试的方法

在MySQL容器的终端中,直接使用正确的socket路径连接:

bash

复制

下载

mysql --socket=/var/lib/mysql/mysql.sock -u root -p

这个命令应该能够立即成功连接!

总结

MySQL服务完全没有问题,正在正常运行! 问题只是简单的路径配置不匹配

  • 服务器端配置socket在:/var/lib/mysql/mysql.sock

  • 客户端期望socket在:/var/run/mysqld/mysqld.sock

使用--socket参数指定正确路径,或者创建符号链接,即可解决此问题。


评论