對於服務器用來與本地客戶端進行通信的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
在運行客戶端程序時,在命令行上為MySQLd_safe指定“--socket”選項。
將MySQL_UNIX_PORT環境變量設置為Unix套接字文件的路徑。
重新從源碼編譯MySQL,以使用不同的默認Unix套接字文件位置。運行configure時,用“--with-unix-socket-path”選項定義文件路徑。
用下述命令連接服務器,能夠測試新的套接字位置是否工作:
shell> MySQLadmin --socket=/path/to/socket version