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