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