文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  密碼安全性的終端使用者指南

8.1.2.1 密碼安全性的終端使用者指南

MySQL 使用者應使用下列指南來確保密碼安全。

當您執行用戶端程式連線至 MySQL 伺服器時,不建議以會讓其他使用者發現的方式指定密碼。以下列出您在執行用戶端程式時可以用來指定密碼的方法,並評估每種方法的風險。簡而言之,最安全的方法是讓用戶端程式提示輸入密碼,或在受到適當保護的選項檔案中指定密碼。

  • 使用 mysql_config_editor 公用程式,這可讓您將驗證認證儲存在名為 .mylogin.cnf 的加密登入路徑檔案中。稍後,MySQL 用戶端程式可以讀取該檔案,以取得連線至 MySQL 伺服器的驗證認證。請參閱第 6.6.7 節,「mysql_config_editor — MySQL 組態公用程式」

  • 在命令列上使用 --password=password-ppassword 選項。例如

    $> mysql -u francis -pfrank db_name
    警告

    這很方便,但不安全。在某些系統上,您的密碼會對系統狀態程式 (例如 ps) 可見,其他使用者可能會叫用這些程式來顯示命令列。MySQL 用戶端通常會在初始化序列期間以零覆寫命令列密碼引數。但是,仍然會有一個短暫的間隔,在此期間值是可見的。此外,在某些系統上,此覆寫策略無效,密碼對於 ps 仍然可見。(SystemV Unix 系統和可能其他的系統會遇到這個問題。)

    如果您的作業環境設定為在終端機視窗的標題列中顯示您目前的命令,則只要命令正在執行,密碼就會保持可見,即使命令已在視窗內容區域中滾動出檢視畫面。

  • 在命令列上使用 --password-p 選項,但未指定密碼值。在這種情況下,用戶端程式會以互動方式要求密碼

    $> mysql -u francis -p db_name
    Enter password: ********

    * 字元表示您輸入密碼的位置。當您輸入密碼時,不會顯示密碼。

    以這種方式輸入密碼比在命令列上指定密碼更安全,因為其他使用者看不到密碼。然而,這種輸入密碼的方法僅適用於您以互動方式執行的程式。如果您想從非互動執行的腳本中調用客戶端,則沒有機會從鍵盤輸入密碼。在某些系統上,您甚至可能會發現腳本的第一行被讀取並(錯誤地)解釋為您的密碼。

  • 將您的密碼儲存在選項檔案中。例如,在 Unix 上,您可以在您主目錄中的 .my.cnf 檔案的 [client] 區段中列出您的密碼

    [client]
    password=password

    為了確保密碼安全,該檔案不應讓您自己以外的任何人存取。為了確保這一點,請將檔案存取模式設定為 400600。例如

    $> chmod 600 .my.cnf

    若要從命令列指定包含密碼的特定選項檔案,請使用 --defaults-file=檔案名稱 選項,其中 檔案名稱 是檔案的完整路徑名稱。例如

    $> mysql --defaults-file=/home/francis/mysql-opts

    第 6.2.2.2 節,「使用選項檔案」,更詳細地討論了選項檔案。

在 Unix 上,mysql 客戶端會將執行的語句記錄到歷史記錄檔案中(請參閱第 6.5.1.3 節,「mysql 客戶端記錄」)。預設情況下,此檔案名為 .mysql_history,並在您的主目錄中建立。密碼可以純文字形式寫入 SQL 語句中,例如 CREATE USERALTER USER,因此如果您使用這些語句,它們會記錄在歷史記錄檔案中。為了確保此檔案的安全,請使用限制性存取模式,如先前針對 .my.cnf 檔案所述的方式。

如果您的命令直譯器維護歷史記錄,則儲存命令的任何檔案都包含在命令列上輸入的 MySQL 密碼。例如,bash 使用 ~/.bash_history。任何此類檔案都應具有限制性存取模式。