為了讓使用 MySQL Shell 更流暢和安全,您可以使用密碼儲存(例如金鑰鏈)來保存伺服器連線的密碼。您可以互動式輸入連線的密碼,並將密碼與伺服器 URL 一起儲存為連線憑證。例如
mysql-js> \connect user@localhost:3310
Creating a session to 'user@localhost:3310'
Please provide the password for 'user@localhost:3310': ********
Save password for 'user@localhost:3310'? [Y]es/[N]o/Ne[v]er (default No): y
一旦儲存伺服器 URL 的密碼後,每當 MySQL Shell 開啟會話時,它會從組態的密碼儲存協助程式中擷取密碼,以登入伺服器,而無需互動式輸入密碼。MySQL Shell 執行的腳本也是如此。如果未組態密碼儲存協助程式,則會要求您互動式輸入密碼。
MySQL Shell 只透過密碼儲存的方式保存伺服器 URL 和密碼,而不會自行保存密碼。
密碼只會在手動輸入時才會保存。如果使用類似伺服器 URI 的連線字串,或在執行 mysqlsh 時在命令列提供密碼,則不會保存密碼。
連線到 MySQL Shell 時接受的最大密碼長度為 128 個字元。
MySQL Shell 提供以下密碼儲存的內建支援
MySQL login-path,這在 MySQL 伺服器支援的所有平台上都可用。它由 MySQL 組態公用程式
mysql_config_editor
提供,該公用程式提供永久儲存。請參閱 mysql_config_editor — MySQL 組態公用程式。MySQL Shell 的 Linux 建置版本會捆綁mysql_config_editor
,因此如果系統上未安裝 MySQL 用戶端套件,也可以使用此功能。macOS 金鑰鏈,請參閱 此處。
Windows API,請參閱 此處。
當 MySQL Shell 在互動模式下執行時,每當啟動新會話,且系統將提示使用者輸入密碼時,就會執行密碼擷取。在提示之前,系統會使用會話的 URL 查詢密碼儲存協助程式是否有密碼。如果找到相符的項目,則會使用此密碼來開啟會話。如果擷取的密碼無效,則會在記錄檔中新增訊息,並從密碼儲存中刪除密碼,而且 MySQL Shell 會提示您輸入密碼。
如果 MySQL Shell 在非互動模式下執行(例如,使用 --no-wizard
),密碼擷取的執行方式與互動模式相同。但在這種情況下,如果密碼儲存協助程式找不到有效的密碼,MySQL Shell 會嘗試在沒有密碼的情況下開啟會話。
只要成功連線到 MySQL 伺服器,且密碼不是由密碼儲存協助程式擷取時,就可以儲存伺服器 URL 的密碼。是否儲存密碼的決定是根據此處描述的 credentialStore.savePasswords
和 credentialStore.excludeFilters
進行的。
在以下情況下會執行自動密碼儲存和擷取
當使用任何連線選項叫用 mysqlsh 時,建立第一個會話時
您使用內建的
\connect
命令您使用
shell.connect()
方法您使用任何需要連線的 AdminAPI 方法