在命令行上使用MySQL密码的安全替代方法是什么?

我们有一个PHP命令行脚本来版本化数据库.
每当开发人员添加新的数据库补丁时,我们都会运行此脚本.

该脚本使用MySQL命令行运行补丁:

system('mysql --user=xxx --password=xxx < patch.sql');

但是,MySQL 5.6现在发出以下警告:

Warning: Using a password on the command line interface can be insecure

这显然是正确的,但对用户来说可能是也可能不是问题.

>那么安全的替代方案是什么?
>或者,是否可以禁用此警告?

请注意,我不想依赖外部密码文件.

最佳答案
在最近的GA版本的MySQL中,即版本5.6,您可以通过mysql_config_editor命令执行此操作,如http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html中所述

基本上它的作用是:使用主机别名加密您的用户/传递凭证,然后使用主机别名,将此信息放入主目录中的配置文件中,然后在需要时,而不是像:

mysqldump -uroot --password=mycleartextpass mydatabase > dumpfile.sql

你反而写道:

mysqldump --login-path=myhostalias mydatabase > dumpfile.sql

从而避免将密码以明文形式放入某个脚本中.

为此,首先必须(仅一次)将myhostalias定义为:

mysql_config_editor set --login-path=myhostalias --host=mysqlhost.localnet.com --user=root --password

您可以根据需要为不同的帐户和/或主机使用不同的登录路径.如果你问我,这是个好主意.

作为一个注释,我相信,5.6以下的任何版本都不存在此功能.

转载注明原文:在命令行上使用MySQL密码的安全替代方法是什么? - 代码日志