Password
如何將密碼傳遞給mysql命令行
我將 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
.最安全的方法是創建一個新的配置文件並將其傳遞給
mysql
使用--defaults-file=
or--defaults-extra-file=
命令行選項。兩者之間的區別在於,除了預設配置文件之外,還會讀取後者,而對於前者,只使用作為參數傳遞的一個文件。
您的附加配置文件應包含類似以下內容:
[client] user=foo password=P@55w0rd
確保您保護此文件。
然後執行:
mysql --defaults-extra-file=<path to the new config file> [all my other options]
客戶端實用程序可以使用或選項
mysql
在命令行上獲取密碼。-p``--password=
如果使用
-p
,則選項字母后不得有任何空格:$ mysql -pmypassword
我更喜歡腳本中的長選項,因為它們是自記錄的:
mysql --password=mypassword --user=me --host=etc