如何确认MySQL配置文件中的socket路径是否正确?
一、找到 MySQL 实际加载的配置文件
mysql --help | grep 'my.cnf' # 客户端角度查看配置文件加载顺序
# 或从服务端角度(需root权限)
sudo mysqld --verbose --help | grep 'my.cnf'
输出示例(不同系统路径可能不同):
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
二、检查配置文件中的socket
设置
1. 搜索配置文件中的socket
参数
# 示例:搜索常见配置文件中的socket设置
sudo grep -r 'socket' /etc/my.cnf /etc/mysql /usr/local/mysql/etc ~/.my.cnf
2. 关键配置项说明
# 服务端配置([mysqld]段,决定服务启动时创建的sock路径)
[mysqld]
socket = /var/run/mysqld/mysqld.sock # 服务端生成的sock文件路径
# 客户端配置([client]段,决定mysql命令等客户端连接时使用的路径)
[client]
socket = /var/run/mysqld/mysqld.sock # 客户端连接时依赖的sock路径
三、验证服务端实际生成的socket
路径
1. 通过进程信息查看
# 查找mysqld进程的启动参数
ps -ef | grep mysqld
输出示例(关注--socket
参数):
mysql 1234 1 0 10:00 ? 00:00:00 /usr/sbin/mysqld --socket=/var/run/mysqld/mysqld.sock --port=3306 ...
2. 检查文件系统中是否存在该路径
# 替换为上一步找到的实际路径
ls -l /var/run/mysqld/mysqld.sock
四、验证客户端与服务端的socket
路径匹配
1. 测试客户端连接
# 格式:mysql -u 用户名 -p --socket=服务端实际的sock路径
mysql -u root -p --socket=/var/run/mysqld/mysqld.sock
2. 检查客户端默认配置
mysql --help | grep 'socket'
五、修正路径不一致的问题
[mysqld]
socket = /var/run/mysqld/mysqld.sock # 统一路径
[client]
socket = /var/run/mysqld/mysqld.sock # 与服务端保持一致
重启 MySQL 服务:
sudo systemctl restart mysql # 或 mariadb
总结
THE END