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

时间:2014-05-20 14:27:53

标签: mysql linux bash passwords

您好我有一个脚本来分区一些mysql数据库。我们正在从5.5升级到5.6。在测试脚本时,我注意到使用新的5.6版本mysql返回Warning: Using a password on the command line interface can be insecure.,解决此问题的最佳方法是什么?我读了一个解决方法是2>/dev/null但是如果它们发生,我将无法获得退出代码或任何错误。有没有其他方法可以做到这一点。这是有问题的代码行:

MYSQL_RESULT=`echo "SET sql_log_bin=0;SET @pdb='$DB',@ptable='$table';CALL maintenance(@pdb,@ptable);SET sql_log_bin=1;"|mysql -uUSER -pPASSWORD database`

2 个答案:

答案 0 :(得分:5)

解决此问题的一种方法是在~/.my.cnf文件中设置相应的变量。类似的东西应该有所帮助:

[mysql]                                                                                                                                                   
user=my_username                                                                                                                                          
password=my_password

这应该存在于执行命令的用户的主目录中。并且不要忘记在文件上设置正确的权限,以避免其他用户可读:chmod 600 ~/.my.cnf

答案 1 :(得分:1)

如果您使用的是MySQL / 5.6.6或更高版本,则可以使用名为mysql_config_editor的捆绑工具:

  

mysql_config_editor实用程序[...]使您可以存储   名为的加密登录路径文件中的身份验证凭据   .mylogin.cnf。文件位置是%APPDATA%\MySQL目录   在Windows上和非Windows上的当前用户的主目录   系统。 MySQL客户端程序稍后可以读取该文件以获取   用于连接MySQL服务器的身份验证凭据。

使用此类工具,您可以分配许多命名凭据(“登录路径”):

$ mysql_config_editor set --login-path=backup-user --host=localhost --user=backup --password
Enter password:
$ mysql_config_editor print --all
[backup-user]
user = backup
password = *****
host = localhost

...以后可以由支持该功能的客户端使用(例如官方命令行客户端或mysqldump):

$ mysql --login-path=backup-user
Welcome to the MySQL monitor.  Commands end with ; or \g.

当然,拥有5.6.6+是获取的主要原因«警告:在命令行界面上使用密码可能是不安全的首先< / em>; - )