MySQL 8.4 發行說明
伺服器用於與本機用戶端通訊的 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