MySQL 9.0 发行说明
服务器用于与本地客户端通信的 Unix 套接字文件的默认位置为 /tmp/mysql.sock
。 (对于某些发行版格式,目录可能有所不同,例如 RPM 的 /var/lib/mysql
。)
在某些版本的 Unix 上,任何人都可以删除 /tmp
目录或用于临时文件的其他类似目录中的文件。 如果套接字文件位于系统上的此类目录中,则可能会导致问题。
在大多数版本的 Unix 上,您可以保护您的 /tmp
目录,以便只有文件所有者或超级用户 (root
) 才能删除文件。 为此,请以 root
用户身份登录,并使用以下命令在 /tmp
目录上设置 sticky
位
$> chmod +t /tmp
您可以通过执行 ls -ld /tmp
来检查 sticky
位是否已设置。 如果最后一个权限字符为 t
,则表示该位已设置。
另一种方法是更改服务器创建 Unix 套接字文件的位置。 如果您执行此操作,您还应让客户端程序了解文件的新的位置。 您可以通过多种方式指定文件位置
在全局或本地选项文件中指定路径。 例如,将以下行放在
/etc/my.cnf
中[mysqld] socket=/path/to/socket [client] socket=/path/to/socket
在命令行上为 mysqld_safe 指定
--socket
选项,并在运行客户端程序时指定此选项。将
MYSQL_UNIX_PORT
环境变量设置为 Unix 套接字文件的路径。从源代码重新编译 MySQL 以使用不同的默认 Unix 套接字文件位置。 在运行 CMake 时,使用
MYSQL_UNIX_ADDR
选项定义文件的路径。 参见 第 2.8.7 节,“MySQL 源代码配置选项”.
您可以使用以下命令测试新的套接字位置是否有效
$> mysqladmin --socket=/path/to/socket version