MySQL 8.0外壳/MySQL Shell入门/可插入密码存储

4.4可插入密码存储

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