Bash

在 INSIDE mysql shell 中變數不會被擴展

  • December 11, 2017

在創建新的 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 usertest1` 手動提供了密碼(不是來自變數),這次我可以正常登錄。

問題

為什麼當我在 mysql shell 中時,沒有變數擴展,我怎麼能防止這種行為或至少獲得接近這種行為的行為?

也許這是一個錯誤?

你不能因為 MySQL Shell 不擴展環境變數。使用者的密碼test${sps}字面意思。但是你可以讓 Bash 擴展變數並將結果輸入 MySQL:

echo "CREATE user \"test\"@\"localhost\" IDENTIFIED BY \"${sps}\";" | mysql -u root -p[PASSWORD]

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