当我尝试使用它时,我将mysql密码保存在文件foo.php上,例如P455w0rd:
$cat foo.php | grep '$dbpwd=' | cut -d '"' -f 2 | mysql -U root -p mydb -h friendserver
Enter password: (holds)
$echo P455w0rd | mysql -u root -p mydb -h friendserver
Enter password: (holds)
这两个选项仍然要求输入密码,从stdin发送密码的正确方法是什么?
解决方法:
你必须非常小心地将密码传递给命令行,因为如果你不小心,你最终会使用诸如ps之类的工具将其打开以进行嗅探.
最安全的方法是创建一个新的配置文件,并使用–defaults-file =或–defaults-extra-file =命令行选项将其传递给mysql.
两者之间的区别在于除了默认配置文件之外还读取后者,而使用前者,只使用作为参数传递的一个文件.
您的其他配置文件应包含类似于:
[client]
user=foo
password=P@55w0rd
确保您保护此文件.
然后运行:
mysql --defaults-extra-file=<path to the new config file> [all my other options]