Command-Line

使 mysql CLI 以互動方式向我詢問密碼

  • November 27, 2017

我將以下程式碼用作更大腳本的一部分:

mysql -u root -p << MYSQL
   create user '${DOMAIN}'@'localhost' identified by '${DOMAIN}';
   create database ${DOMAIN};
   GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL

如您所見,它創建了一個授權的、所有特權的數據庫使用者和一個具有相同值的數據庫實例(密碼也將作為相同的值)。

DB user ====> ${domain}.
DB user password ====> ${domain}.
DB instance ====> ${domain}.

這是有問題的,因為我需要密碼不同。當然,我可以在整個腳本完成執行後從 `${domain} 手動更改密碼,但這不是我想要的:

我想要的是直接在執行時以互動方式輸入/粘貼密碼。

換句話說,我希望提示我輸入數據庫使用者的密碼將是執行腳本的一個組成部分。

我已經嘗試了以下程式碼,但失敗了:

mysql -u root -p << MYSQL
   create user '${DOMAIN}'@'localhost' identified by -p;
   create database ${DOMAIN};
   GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL

通過直接在腳本執行中鍵入/粘貼(而不是在腳本執行後手動更改)以互動方式插入密碼的正確方法是什麼?

只需讓使用者預先儲存變數read

echo "Please enter password for user ${domain}: "; read -s psw
mysql -u root -p << MYSQL
 create user '${domain}'@'localhost' identified by '${psw}';
 create database ${domain};
 GRANT ALL PRIVILEGES ON ${domain}.* TO ${domain}@localhost;
MYSQL 

在這裡,命令read讀取使用者輸入並將其儲存在$psw變數中。請注意,在輸入密碼值後,系統將提示您輸入 MySQL 根密碼以連接到 MySQL 數據庫(-p標誌 = 互動式密碼提示)。

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