MySQL 9.0 版本說明
伺服器用於與本機用戶端通訊的 Unix socket 檔案的預設位置是 /tmp/mysql.sock
。(對於某些發行版格式,目錄可能會有所不同,例如 RPM 的 /var/lib/mysql
。)
在某些版本的 Unix 上,任何人都可以刪除 /tmp
目錄或用於暫存檔的其他類似目錄中的檔案。如果 socket 檔案位於您系統上此類目錄中,則可能會導致問題。
在大多數版本的 Unix 上,您可以保護您的 /tmp
目錄,使其檔案只能由其所有者或超級使用者 (root
) 刪除。若要執行此操作,請以 root
身分登入,並使用以下命令在 /tmp
目錄上設定 sticky
位元
$> chmod +t /tmp
您可以使用執行 ls -ld /tmp
來檢查是否已設定 sticky
位元。如果最後一個權限字元是 t
,則表示已設定該位元。
另一種方法是變更伺服器建立 Unix socket 檔案的位置。如果您這樣做,也應讓用戶端程式知道該檔案的新位置。您可以使用幾種方式指定檔案位置
在全域或本機選項檔案中指定路徑。例如,將以下幾行放在
/etc/my.cnf
中[mysqld] socket=/path/to/socket [client] socket=/path/to/socket
在 mysqld_safe 的命令列上,以及執行用戶端程式時,指定
--socket
選項。將
MYSQL_UNIX_PORT
環境變數設定為 Unix socket 檔案的路徑。從原始碼重新編譯 MySQL,以使用不同的預設 Unix socket 檔案位置。當您執行 CMake 時,使用
MYSQL_UNIX_ADDR
選項來定義檔案的路徑。請參閱第 2.8.7 節,〈MySQL 原始碼組態選項〉。
您可以使用此命令嘗試連線至伺服器,來測試新的 socket 位置是否有效
$> mysqladmin --socket=/path/to/socket version