当我尝试从终端内在MySQL上运行以下命令时:
mysql -u $user -p$password -e "statement"
执行按预期工作,但它总是发出警告:
警告:在命令行界面上使用密码可能不安全。
但是,我必须使用存储密码的环境变量($password
)来执行上面的语句,因为我希望在终端内的bash脚本中迭代地运行该命令,并且我绝对不喜欢等待提示出现并迫使我在单个脚本中输入密码50或100次的想法。所以我的问题是:
运行man mysql
无济于事,只是说
--show-warnings
导致在每条语句后显示警告。此选项适用于交互式和批处理模式。
并且没有提到如何关闭功能,如果我没有遗漏一些东西。
我使用的是OSX10.9.1 Mavericks,使用的是homebrew的MySQL 5.6。
发布于 2013-12-31 16:07:09
如果您的MySQL客户端/服务器版本是5.6.x,避免出现警告消息的方法是使用工具:
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"
发布于 2014-04-08 17:34:24
我使用类似这样的东西:
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
发布于 2014-06-12 23:59:02
一种方便(但同样不安全)的方法是使用:
MYSQL_PWD=xxxxxxxx mysql -u root -e "statement"
请注意,官方文档建议不要使用它。
请参阅6.1.2.1 End-User Guidelines for Password Security (Mysql Manual for Version 5.6)
将密码存储在
MYSQL_PWD
环境变量中
这种指定MySQL密码的方法必须被认为是极不安全的,不应该使用。某些版本的ps包含一个选项,用于显示运行进程的环境。在某些系统上,如果设置了MYSQL_PWD
,则您的密码将向运行ps的任何其他用户公开。即使在没有此版本ps的系统上,假设没有其他方法可供用户检查进程环境也是不明智的。
https://stackoverflow.com/questions/20751352
复制相似问题