如何配置mysql socket文件_mysql socket配置说明

来源:这里教程网 时间:2026-02-28 20:33:34 作者:

MySQL 的 socket 文件是本地客户端连接 MySQL 服务器时使用的 Unix 域套接字(Unix domain socket),它绕过 TCP/IP 协议栈,性能更高、更安全,仅适用于本机连接。配置的关键在于确保

mysqld
服务启动时正确生成 socket 文件,且客户端(如
mysql
命令行工具、PHP、Python 等)能准确定位该文件。

查看当前 MySQL 使用的 socket 路径

登录 MySQL 后执行以下 SQL 命令即可查到实际路径:

mysql> SHOW VARIABLES LIKE 'socket';

输出类似:

+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| socket | /var/run/mysqld/mysqld.sock |
+---------------+-----------------------------+

这个路径就是当前生效的 socket 文件位置,后续配置需保持一致。

在 my.cnf 中统一配置 socket 路径

编辑 MySQL 主配置文件(常见路径:

/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
),在
[mysqld]
[client]
两个段落下分别指定
socket

[mysqld] 段控制服务端监听路径,例如:
socket = /var/run/mysqld/mysqld.sock
[client] 段控制默认客户端连接路径,例如:
socket = /var/run/mysqld/mysqld.sock
可选:为兼容性,在
[mysql]
[mysqldump]
等子段也显式声明相同路径

修改后需重启 MySQL 服务生效:
sudo systemctl restart mysql(或

mysqld
,依系统而定)

客户端连接时显式指定 socket 路径

若未在

[client]
段配置,或需临时切换 socket,可通过命令行参数指定:

使用
-S
参数连接:
mysql -u root -p -S /var/run/mysqld/mysqld.sock
PHP 中使用 PDO 或 mysqli 时,在 DSN 或连接参数中设置:
mysqli://root:pass@localhost:3306/db?unix_socket=/var/run/mysqld/mysqld.sock
Python 的
pymysql
mysql-connector-python
支持
unix_socket
参数

常见问题与注意事项

socket 文件目录(如
/var/run/mysqld/
)必须存在,且
mysql
用户有读写权限
SELinux 或 AppArmor 可能阻止 mysqld 创建 socket,需检查日志并调整策略 Docker 容器中运行 MySQL 时,宿主机和容器内路径不同,需通过卷映射确保客户端访问路径一致 Mac 上 Homebrew 安装的 MySQL 默认 socket 通常在
/tmp/mysql.sock
,Linux 发行版多为
/var/run/mysqld/mysqld.sock

相关推荐