本文共 1828 字,大约阅读时间需要 6 分钟。
作为 MySQL 的运维人员,熟悉 MySQL shell 的命令行操作对日常工作极为重要。其中,批量操作与密码管理_module_是常见需求。本文将详细介绍如何通过 mysql shell 实现无交互式登录以及密码管理的高级使用方法。
在脚本化操作中,经常需要执行无交互式的 mysql shell 命令。使用 mysql shell 可以像传统的 mysql 提交命令一样工作,只需指定选项即可执行操作。具体语法如下:
mysqlsh [options] -- shell_object object_method [arguments]
例如,想要查看特定主机上的集群状态,可以执行:
mysqlsh -h172.16.22.1 -P3306 -uroot -p -- cluster status
该命令会输出集群状态信息,即等同于调用 db.a_getCluster().status()
。这种方式在脚本中非常方便,避免了交互式登录的繁琐。
密码管理是脚本化操作中至关重要的一环。直接暴露密码不仅危及安全,还容易导致密码泄露。本节将介绍如何通过 mysql shell WITHOUT INTERACTION 模式实现密码存储与管理。
默认情况下,mysql shell 会询问是否保存密码。你可以通过配置选项来控制存储行为。
修改默认存储密码行为:
shell.options.setPersist("credentialStore.savePasswords", "always");
或者,单独设置相关选项:
shell.options.setPersist("credentialStore.helper", "" );
启用后使用的下一次登录会再次生效。如果发现提示 invalid>
,说明 mysql_config_editor
未安装。这种工具用于存储和管理数据库连接密码。
通过 mysql shell 查看已存储的密码连接串:
shell.listCredentials();
输出结果类似:
[ "root@localhost", "universe_op@10.186.63.93:3306", "root@127.0.0.1:3306"]
这些信息是通过 mysql_config_editor
保存的。你可以手动使用 mysql_config_editor
查看或打印详细信息:
mysql_config_editor print --all
将输出结果与 mysql shell 中的密码对应,确保数据一致。
在第一次连接时,允许程序自动提示保存密码:
mysqlsh universe_op@10.186.63.93:3306
输入密码后,默认会提示是否保存密码。输入 Y
即可存储登录信息。
通过 mysql_config_editor 手动添加并保存密码终结:
mysql_config_editor set --login-path="universe_op@10.186.63.93:3306" --host=10.186.63.93 --port=3306 --user=universe_op -p
设置完成后,下次登录时将无需输入密码。
有时需要清除旧的或错误的密码连接串。使用以下命令删除指定的密码:
mysql_config_editor remove --login-path=universe_op@10.186.63.93:3306
完成后,相关登录信息将从系统中移除,确保安全性。
invalid>
),请确认 mysql_config_editor
是否已安装。通过以上方法,可以在脚本中高效实现 mysql shell 的无交互式登录,同时保证密码安全。这种方式特别适合自动化监控和集群维护任务。希望本文能为您的工作节省时间,提升效率!
转载地址:http://adraz.baihongyu.com/