为了账号安全,请及时绑定邮箱和手机立即绑定

在终端中使用mysql抑制警告消息,但用bash脚本编写密码

/ 猿问

在终端中使用mysql抑制警告消息,但用bash脚本编写密码

MM们 2019-12-09 09:30:44

当我尝试从Terminal在MySQL上运行以下命令时:


mysql -u $user -p$password -e "statement"

执行工作按预期方式进行,但始终会发出警告:


警告:在命令行界面上使用密码可能不安全。


但是,我必须使用$password存储我的密码的环境变量()进行上述声明,因为我想在Terminal中从bash脚本中迭代地运行命令,而且我绝对不喜欢等待提示出现的想法并迫使我在一个脚本中输入50或100次密码。所以这是我的问题:


抑制警告是否可行?该命令可以按照我所说的那样正常工作,但是当我循环并运行50或100次命令时,窗口会变得非常混乱。


我应该听从警告消息并且不要在脚本中写密码吗?如果是这种情况,那么每次提示提示我输入密码时,我都必须输入密码吗?


跑步man mysql无济于事,只说


--show-warnings

导致在每个语句之后显示警告。此选项适用于交互式和批处理模式。


如果没有丢失任何内容,也没有提及如何关闭功能。


我在OS X 10.9.1 Mavericks上,并使用自制软件中的MySQL 5.6。


查看完整描述

3 回答

?
12345678_0001

如果您的MySQL客户端/服务器版本是5.6.xa以避免警告消息的方式,请使用mysql_config_editor工具:


mysql_config_editor set --login-path=local --host=localhost --user=username --password

然后,您可以在shell脚本中使用:


mysql --login-path=local  -e "statement"

代替:


mysql -u username -p pass -e "statement"


查看完整回答
反对 回复 2019-12-09
?
慕姐8265434

我用类似的东西:


mysql --defaults-extra-file=/path/to/config.cnf

要么


mysqldump --defaults-extra-file=/path/to/config.cnf 

config.cnf包含:


[client]

user = whatever

password = whatever

host = whatever

这使您可以拥有多个配置文件-用于不同的服务器/角色/数据库。使用〜/ .my.cnf仅允许您进行一组配置(尽管这可能是一组有用的默认值)。


如果您使用的是基于Debian的发行版,并且以root身份运行,则可以跳过上述内容,而只需使用/etc/mysql/debian.cnf即可进入...:


mysql --defaults-extra-file=/etc/mysql/debian.cnf


查看完整回答
反对 回复 2019-12-09
?
慕勒3428872

这是我获取bash脚本的方法,以使我的日常mysqldump数据库备份更安全地工作。这是对克里斯蒂安·波塔(Cristian Porta)的一个很好的回答。


首先使用mysql_config_editor(与mysql 5.6+一起提供)来设置加密的密码文件。假设您的用户名是“ db_user”。从shell提示符运行:


mysql_config_editor set --login-path=local --host=localhost --user=db_user --password

提示输入密码。输入密码后,用户/密码将加密保存在您的home/system_username/.mylogin.cnf


当然,将“ system_username”更改为您在服务器上的用户名。


从此更改您的bash脚本:


mysqldump -u db_user -pInsecurePassword my_database | gzip > db_backup.tar.gz

对此:


mysqldump --login-path=local my_database | gzip > db_backup.tar.gz

没有更多的公开密码。


查看完整回答
反对 回复 2019-12-09

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信