Password

如何將密碼傳遞給mysql命令行

  • November 2, 2021

我將 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

引用自:https://unix.stackexchange.com/questions/205180