We have a PHP command-line script to version a database.
We run this script whenever a developer has added a new database patch.
The script runs the patch with the MySQL command-line:
system('mysql --user=xxx --password=xxx < patch.sql');
However, MySQL 5.6 now issues the following warning:
Warning: Using a password on the command line interface can be insecure
Which is obviously true, but might or might not be a problem for the user.
- What's the secure alternative then?
- Alternatively, is it possible to disable this warning?
Please note that I don't want to have to rely on an external password file.
Best Answer
In the recent GA version of MySQL, ie, version 5.6, you can do this through the mysql_config_editor command, as described in http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html
Basically what it does is: encrypt your user/pass credentials with an host alias, and then you use the host alias, put this information into a config file in your home directory, and then, when you need it, instead of doing something like:
you instead write:
thereby avoiding to put your password into some script in cleartext.
For this to work, you first must (only once) define
myhostalias
as:You can use different login paths for different accounts and/or hosts as you like. Pretty good idea if you ask me.
As a note, I believe, this functionality does NOT exist in any version below 5.6.