Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  How to Protect or Change the MySQL Unix Socket File

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

默认情况下,服务器使用的 Unix 套接字文件的位置是 /tmp/mysql.sock。 (对于某些分发格式,目录可能不同,例如 RPMs 中的 /var/lib/mysql。)

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

在大多数 Unix 版本上,您可以保护 /tmp 目录,以便只有文件所有者或超级用户 (root) 可以删除文件。要实现这一点,请以 root 身份登录,然后使用以下命令设置 sticky 位:

$> 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 环境变量设置为套接字文件的路径。

  • 从源代码重新编译 MySQL,以使用不同的默认 Unix 套接字文件位置。使用 MYSQL_UNIX_ADDR 选项在运行 CMake 时定义文件路径。请参阅第2.8.7节,“MySQL 源代码配置选项”

您可以通过尝试使用以下命令连接到服务器来测试新套接字文件路径:

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