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