Ben*_*rel 39 mysql php command-line-interface
我们有一个 PHP 命令行脚本来对数据库进行版本控制。每当开发人员添加新的数据库补丁时,我们都会运行此脚本。
该脚本使用 MySQL 命令行运行补丁:
system('mysql --user=xxx --password=xxx < patch.sql');
Run Code Online (Sandbox Code Playgroud)
但是,MySQL 5.6 现在发出以下警告:
警告:在命令行界面上使用密码可能不安全
这显然是正确的,但对用户来说可能是也可能不是问题。
请注意,我不想依赖外部密码文件。
小智 21
在最近的 MySQL GA 版本,即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
Run Code Online (Sandbox Code Playgroud)
你改为写:
mysqldump --login-path=myhostalias mydatabase > dumpfile.sql
Run Code Online (Sandbox Code Playgroud)
从而避免将您的密码以明文形式放入某些脚本中。
为此,您首先必须(仅一次)定义myhostalias
为:
mysql_config_editor set --login-path=myhostalias --host=mysqlhost.localnet.com --user=root --password
Run Code Online (Sandbox Code Playgroud)
您可以根据需要为不同的帐户和/或主机使用不同的登录路径。如果你问我,这是个好主意。
请注意,我相信,此功能在 5.6 以下的任何版本中都不存在。
使用--defaults-file
或--defaults-extra-file
选项。您可以在其中指定用户 ID 和密码。它的格式与/etc/my.cnf
.
进一步阅读,您说您不想依赖外部密码文件,但这是唯一真正安全的方法。其他任何东西都会在进程表或其他东西中留下痕迹。如果您真的愿意,您甚至可以将密码文件置于版本控制中。将其设置为 600(或 400)并且只能由 mysql 或运行它的用户读取。
每个http://dev.mysql.com/doc/refman/5.1/en/password-security-user.html有 4 个选项
-pyour_pass
or--password=your_pass
选项-p
or--password
选项。在这种情况下,客户端程序以交互方式请求密码:MYSQL_PWD
环境变量中根据您的需要,MYSQL_PWD
可能是一种选择,但它不再安全。确实,您应该生成一个交互式进程--password
并以交互方式提交密码,但对于此问题的解决方案相当复杂。
归档时间: |
|
查看次数: |
34680 次 |
最近记录: |