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

17次阅读

MySQL socket 文件是本地连接用的 Unix 域套接字,路径可通过 SHOW VARIABLES LIKE ‘socket’ 查询;需在 my.cnf 的 [mysqld] 和[client]段统一配置,重启服务生效;客户端可使用 - S 参数或连接字符串中指定 unix_socket。

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

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 的 pymysqlmysql-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
text=ZqhQzanResources