我使用以下程式碼作為更大腳本的一部分:
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
透過在腳本執行中直接鍵入/貼上(而不是在腳本執行後手動更改密碼),能夠以互動方式插入密碼的正確方法是什麼?
答案1
只需讓使用者預先儲存變數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 root 密碼,以便連線到 MySQL 資料庫(-p
flag = 互動式密碼提示)。