為了使使用 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 方法