# B.3.3.6 如何保护或更改 MySQL Unix 套接字文件

服务器用于与本地客户端通信的 Unix 套接字文件的默认位置是/tmp/mysql.sock.(对于某些分发格式,目录可能不同,例如/var/lib/mysql对于 RPM。)

在某些版本的 Unix 上,任何人都可以删除/tmp用于临时文件的目录或其他类似目录。如果套接字文件位于系统上的此类目录中,则可能会导致问题。

在大多数版本的 Unix 上,您可以保护您的/tmp目录,以便文件只能由其所有者或超级用户删除()。为此,请设置位在/tmp通过登录为目录并使用以下命令:

$> chmod +t /tmp

您可以检查是否位通过执行设置ls -ld /tmp.如果最后一个权限字符是,该位已设置。

另一种方法是更改​​服务器创建 Unix 套接字文件的位置。如果这样做,您还应该让客户端程序知道文件的新位置。您可以通过多种方式指定文件位置:

  • 在全局或本地选项文件中指定路径。例如,将以下行放入/etc/my.cnf

    [mysqld]
    socket=/path/to/socket
    
    [client]
    socket=/path/to/socket
    

    第 4.2.2.2 节,“使用选项文件”.

  • 指定一个- 插座命令行选项mysqld_安全的以及当您运行客户端程序时。

  • 设置MYSQL_UNIX_PORT环境变量指向 Unix 套接字文件的路径。

  • 从源代码重新编译 MySQL 以使用不同的默认 Unix 套接字文件位置。定义文件的路径MYSQL_UNIX_ADDR运行时的选项制作.看第 2.9.7 节,“MySQL 源配置选项”.

    您可以通过尝试使用以下命令连接到服务器来测试新的套接字位置是否有效:

$> mysqladmin --socket=/path/to/socket version