您好我有一个脚本来分割一些MySQL数据库。 我们正在从5.5升级到5.6。 在testing脚本的时候,我注意到新的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`
解决这个问题的一种方法是在~/.my.cnf
文件中设置适当的变量。 类似的东西应该有所帮助:
[mysql] user=my_username password=my_password
这应该在执行命令的用户的主目录中。 不要忘记在文件上设置正确的权限以避免其他用户可读: chmod 600 ~/.my.cnf
。
如果您使用MySQL / 5.6.6或更高版本,则可以使用名为mysql_config_editor的捆绑工具:
mysql_config_editor
实用程序使您可以将身份验证凭据存储在名为.mylogin.cnf
的加密登录路径文件中。 文件位置是Windows上的%APPDATA%\MySQL
目录以及非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+的主要原因是 “警告:在命令行界面上使用密码可能是不安全的” ;首先,