2011-03-12 54 views
0

將從我嘗試完成的事情開始。我寫了一個菜單腳本來添加一個新的數據庫並回顯回顯結果。但似乎無法讓它與變量登錄。Bash用戶輸入Mysql登錄

與繼承人我有部分問題:

#!/bin/bash 
while [[ "$yn" != "Yes" && "$yn" != "Y" && "$yn" != "y" && "$yn" != "yes" ]]; do 
    echo " Please, type password for root user.    #" 
read -r mysqlrp 
    echo " You have entered $mysqlrp as your MySQL password #" 
    echo " Is this correct? (Yes or No)   #" 
     read yn 
done 
mysql -u root -p$mysqlrp 

也曾嘗試:

mysql -u root -p${mysqlrp} 

以及mysql -u root -p'${mysqlrp}'

我得到如下:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 

即使當我嘗試沒有腳本工作正常。

請幫幫忙, 在此先感謝, 喬

+1

什麼錯誤信息,你得到什麼? 密碼中是否有特殊字符? 你試過'mysql -u root -p「$ mysqlrp」'? – bmk 2011-03-12 21:10:44

+0

嘗試過:ERROR 1045(28000):拒絕用戶'root'@'localhost'的訪問(使用密碼:YES) yes有特殊字符,但它從 正確回顯給我echo「您輸入了$ mysqlrp as你的MySQL密碼#「 – jmituzas 2011-03-12 21:13:47

+0

使用雙引號而不是單引號。 – 2011-03-12 21:26:16

回答

1

要在命令行字符串直接提供密碼,你應該使用mysql --password=[password]See this article

並提示用戶輸入密碼,你應該使用這樣的東西。

#!/bin/bash 
read -p "Username: " uname 
stty -echo 
read -p "Password: " passw; echo 
stty echo 

您不得打印密碼。在輸入時不應該看到它。


#!/bin/bash 
read -p "Username: " uname 
stty -echo 
read -p "Password: " passw; echo 
stty echo 
mysql --user=$uname --password=$passw 

該腳本對我的作品。如果它不適合你,請檢查你的mysql權限是否允許你從localhost登錄。

+0

您可以使用'read -s'來抑制字符輸入時的回顯。 – 2011-03-12 21:24:35

+0

這仍然不適合我。 – jmituzas 2011-03-12 21:36:11

+0

@jmituzas更新回答問題。 – Znarkus 2011-03-12 21:45:29

0

在shell腳本,你可以做

set -x 

,看看正在執行的命令的模樣。

你應該prolly做mysql --password =「$ mysqlrp」。 '$ mysqlrp' - >'$ mysqlrp'。

在你真正的劇本,我想你可能想要做

read -p "Password, plz:" -s mysqlrp 

爲了正確地回答這個問題,你得到的實際誤差將是有益的。 [更新:回答評論]

另外,需要注意的是,如果你的查詢longrunning,您的密碼將在「PS -ef」可見

+0

確定這裏問題是它保持$ mysqlrp作爲密碼 – jmituzas 2011-03-12 21:46:01