Bash
在 INSIDE mysql shell 中變數不會被擴展
在創建新的 mysql 使用者和數據庫之前,我做了:
read sps -s # Inputing and saving the sps (password) value. echo ${sps} # sps password value echoed. mysql -u root -p[PASSWORD] mysql> CREATE user "test"@"localhost" IDENTIFIED BY "${sps}";
問題
當我登錄時,
mysql -u test -p[SPS_PASSWORD_VALUE]
我收到一個錯誤,即訪問被拒絕。密碼不是我給出的值,
${sps}
而是它${sps}
本身,作為一個字元串。問題
為了“正式”證明問題是由於
${sps} variable not being expanded **inside** mysql shell, and therefore acts as a regular string, I created another user
test1` 手動提供了密碼(不是來自變數),這次我可以正常登錄。問題
為什麼當我在 mysql shell 中時,沒有變數擴展,我怎麼能防止這種行為或至少獲得接近這種行為的行為?
也許這是一個錯誤?
你不能因為 MySQL Shell 不擴展環境變數。使用者的密碼
test
是${sps}
字面意思。但是你可以讓 Bash 擴展變數並將結果輸入 MySQL:echo "CREATE user \"test\"@\"localhost\" IDENTIFIED BY \"${sps}\";" | mysql -u root -p[PASSWORD]