problems-with-mysql-sock">
A.4.5. 如何保護或更改MySQL套接字文件/tmp/mysql.sock
對于服務器用來與本地客戶端進行通信的Unix套接字文件,其默認位置是/tmp/mysql.sock。這有可能導致問題,原因在于,在某些版本的Unix上,任何人都能刪除/tmp目錄下的文件。
在大多數Unix版本中,可對/tmp目錄進行保護,使得文件只能被其所有這或超級用戶(根用戶)刪除。為此,以根用戶身份登錄,并使用下述命令在/tmp目錄上設置粘著位:
shell> chmod +t /tmp
通過執行ls -ld /tmp,可檢查是否設置了粘著位。如果最后一個許可字符是“t”,表明設置了粘著位。
另一種方法是改變服務器創建Unix套接字文件的位置。如果進行了這類操作,還應讓客戶端程序知道文件的位置。能夠以多種不同方式指定文件位置:
在全局或局部選項文件中指定路徑。例如,將下述行置于文件/etc/my.cnf中:
[mysqld]
socket=/path/to/socket
[client]
socket=/path/to/socket
請參見4.3.2節,“使用選項文件”。
在運行客戶端程序時,在命令行上為mysqld_safe指定“--socket”選項。
將MYSQL_UNIX_PORT環境變量設置為Unix套接字文件的路徑。
重新從源碼編譯MySQL,以使用不同的默認Unix套接字文件位置。運行configure時,用“--with-unix-socket-path”選項定義文件路徑。請參見2.8.2節,“典型配置選項”。
用下述命令連接服務器,能夠測試新的套接字位置是否工作:
shell> mysqladmin --socket=/path/to/socket version