关于mysql:技术分享-mysqlsh-命令行模式-密码保存

33次阅读

共计 2141 个字符,预计需要花费 6 分钟才能阅读完成。

作者:胡呈清

爱可生 DBA 团队成员,善于故障剖析、性能优化,集体博客:https://www.jianshu.com/u/a95…,欢送探讨。

本文起源:原创投稿

* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。

命令行模式

mysql shell 如何实现相似 mysql -e “show processlist;” 的成果?即执行完就退出登录,不须要交互,咱们常常在脚本中这样应用。那么同样的,在保护 InnoDB Cluster 时,怎么在脚本中调用 mysql shell 查看 MGR 集群的状态或者对集群做操作呢?语法如下:

mysqlsh [options] -- shell_object object_method [arguments]

示例:

mysqlsh -h172.16.22.1 -P3306 -uroot -p -- cluster status

能够间接输入 cluster 状态信息,等同于:

mysqlsh -h172.16.22.1 -P3306 -uroot -p
var cluster=dba.getCluster()
cluster.status()

配合上面介绍的明码保留办法,防止在脚本中裸露明码,也能够防止交互式输出明码,能够很不便的查问状态或者做一些保护操作,比方:

配置保留明码

默认设置:

JS > \option -l
 ...
 credentialStore.excludeFilters  []
 credentialStore.helper          default
 credentialStore.savePasswords   prompt
 ...

credentialStore.helper

默认状况下,此选项设置为非凡值 default。能够设置为 <disabled> 来禁用明码存储和检索性能,留神要用 setPersist 能力在退出 mysqlsh 后的下一次失效:

shell.options.setPersist("credentialStore.helper", "<disabled>")

若是显示为“<invalid>”,则无奈应用明码存储和检索,通常是因为没有装置 mysql_config_editor,因为 mysql shell 的明码保留理论也是用 mysql_config_editor 实现的,上面会解释道具体用法。

credentialStore.savePasswords

此参数用来管制每次连贯时保留明码的行为:

  • prompt,默认值,交互模式下,会呈现抉择是否保留明码;
  • always,主动保留明码,没有交互式抉择;
  • never,不保留明码,没有交互式抉择。

这样批改:

shell.options.setPersist("credentialStore.savePasswords","always")

查看以后保留了明码的连贯串

能够在 mysqlsh 中查看:

JS > shell.listCredentials()
[
    "root@localhost",
    "universe_op@10.186.63.93:3306",
    "root@127.0.0.1:3306"
]

实际上是通过 mysql_config_editor 保留的明码,所以也能够用 mysql_config_editor print –all 查看,与下面输入的连贯串一一对应:

[root@10-186-63-93 ~]# mysql_config_editor print --all
[universe_op@10.186.63.93:3306]
user = universe_op
password = *****
host = 10.186.63.93
port = 3306
[root@localhost]
user = root
password = *****
host = localhost
[root@127.0.0.1:3306]
user = root
password = *****
host = 127.0.0.1
port = 3306

设置连贯串保留明码

失常状况下每次应用 mysqlsh 连贯 MySQL Server,输出明码后都会询问是否保留明码,键入“Y”即可保留明码:

[root@10-186-63-93 ~]# mysqlsh universe_op@10.186.63.93:3306
Please provide the password for 'universe_op@10.186.63.93:3306': ****
Save password for 'universe_op@10.186.63.93:3306'? [Y]es/[N]o/Ne[v]er (default No):Y

也能够通过 mysql_config_editor set 来保留指定连贯串的明码:

mysql_config_editor set --login-path="universe_op@10.186.63.93:3306" --host=10.186.63.93 \
--port=3306 --user=universe_op -p

接下来应用 mysqlsh 登录时,不须要输出明码即可登录:

删除连贯串明码

如果要删除对应的连贯串明码,用如下命令:

mysql_config_editor remove --login-path=universe_op@10.186.63.93:3306

正文完
 0