为了使使用MySQL Shell更加流畅和安全,您可以使用秘密存储(如密钥链)持久化服务器连接的密码。您以交互方式输入连接的密码,它将作为连接的凭据与服务器URL一起存储。例如:
mysql-js> \connect user@localhost:3310创建一个会话到“user@localhost:3310”请提供密码为“user@localhost:3310”:********保存密码为“user@localhost:3310”?[Y]es/[N]o/Ne[v]er(默认否):Y
一旦存储了服务器URL的密码,无论何时MySQL Shell打开一个会话,它都会从配置的Secret Store Helper检索密码,以登录到服务器,而不必交互地输入密码。MySQL Shell执行的脚本也是如此。如果没有配置秘密存储助手,则以交互方式请求密码。
MySQL Shell只通过Secret Store的方式保存服务器URL和密码,而不自己保存密码。
密码只有在手动输入时才会被保存。如果在运行时使用服务器uri类连接字符串或在命令行提供密码mysqlsh它没有被坚持。
连接MySQL Shell所允许的最大密码长度为128个字符。
MySQL Shell提供了对以下秘密存储的内置支持:
MySQL登录路径,在MySQL服务器支持的所有平台上都可用(只要安装了MySQL客户端包),并提供持久存储。看到mysql_config_editor - MySQL配置实用程序.
macOS钥匙扣,请参阅在这里.
Windows API,看在这里.
当MySQL Shell以交互模式运行时,每当启动一个新会话并提示用户输入密码时,都会执行密码检索。在提示之前,使用会话的URL查询Secret Store Helper的密码。如果找到匹配,则使用此密码打开会话。如果检索到的密码无效,则会向日志中添加一条消息,从Secret Store中删除密码,MySQL Shell会提示您输入密码。
如果MySQL Shell运行在非交互模式(例如——no-wizard
),密码检索的执行方式与交互模式相同。但是在这种情况下,如果Secret Store Helper没有找到有效的密码,MySQL Shell将尝试在没有密码的情况下打开会话。
只要成功连接到MySQL服务器,并且秘密存储助手没有检索到密码,就可以存储服务器URL的密码。存储密码的决定是基于credentialStore.savePasswords
而且credentialStore.excludeFilters
这里描述。
在以下情况下,自动存储和检索密码:
mysqlsh在建立第一个会话时,是否使用任何连接选项调用
使用内置的
\连接
命令您使用
shell.connect ()
方法使用任何需要连接的AdminAPI方法