MySQL 安全认证工具
很多时候,我们需要写脚本来定时备份MySQL数据库,其中需要用到密码的地方,大多数的处理方式,要么做本地免密,要么将密码写入到另外的文件中引入,再或者用交互的方式expect。在MySQL5.6之前是没有任何问题的,在MySQL5.6之后,引入了密码安全机制,导致在文本中或在shell中出现明文密码的时候,MySQL会提示如下错误:
Warning: Using a password on the command line interface can be insecure.
虽然這个只是个Warning,并不影响shell的正常执行,但是当作一些信息获取,或者判断$? 时,就比较头疼了。
這里介绍一个工具,mysql自带的mysql_config_editor,它是mysql用户安全认证工具,它将MySQL服务的认证信息加密保存在.mylogin.cnf文件(默认于用户主目录),之后MySQL客户端工具可通过读取该加密文件连接MySQL,避免重复输入登录信息,避免敏感信息暴露。
mysql_config_editor使用帮助:
配置:
mysql_config_editor set --login-path=test --user=test_user --host=127.0.0.1 --port=3306 --password
其中可配置项
-h,–host=name 添加host到登陆文件中
-G,–login-path=name 在登录文件中为login path添加名字(默认为client)
-p,–password 在登陆文件中添加密码(该密码会被mysql_config_editor自动加密)
-u,–user 添加用户名到登陆文件中
-S,–socket=name 添加sock文件路径到登陆文件中
-P,–port=name 添加登陆端口到登陆文件中
显示配置:
mysql_config_editor print --login-path=test #显示执行的login-path配置
mysql_config_editor print --all #显示所有的login-path信息
删除配置:
mysql_config_editor remove --login-path=test
其中可删除项
-h,–host=name 添加host到登陆文件中
-G,–login-path=name 在登录文件中为login path添加名字(默认为client)
-p,–password 在登陆文件中添加密码(该密码会被mysql_config_editor自动加密)
-u,–user 添加用户名到登陆文件中
-S,–socket=name 添加sock文件路径到登陆文件中
-P,–port=name 添加登陆端口到登陆文件中
重置配置:
mysql_config_editor reset --login-path=test
使用login-path登录:
shell>mysql --login-path=test
若要登录其他主机、其他端口,或者添加其他额外参数,直接在上述命令后添加即可
shell>mysql --login-path=test -h host1 -P port1 #登录host1:poet1上的MySQL
shell>mysql --login-path=test -h host1 -P port1 test_db #登录host1:poet1上的MySQL中的test_db库
【nginx优化】使用socket方式链接Nginx优化php-fpm性能
【环境配置】Postfix2.10+ssl+dovecot搭建邮件服务器
【实践分享】Linode VPS和Vultr VPS使用体检对比
【开源工具】Sersync实现数据同步