簡體   English   中英

Bash用戶輸入Mysql登錄

[英]Bash user input Mysql login

從我要完成的事情開始。 我寫了一個菜單腳本來添加一個新的數據庫並回顯屏幕結果。 但是似乎無法使用變量登錄。

這是我遇到的問題:

#!/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)

即使我嘗試不使用腳本也能正常工作。

請幫助,在此先感謝,喬

要直接在命令行字符串中提供密碼,您應該使用mysql --password=[password] 看到這篇文章

為了提示用戶輸入密碼,您可能應該使用類似這樣的方式。

#!/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登錄。

在shellscript中,您可以執行

set -x

看看正在執行的命令是什么樣子。

您應該正確地執行mysql --password =“ $ mysqlrp”。 '$ mysqlrp'->'$ mysqlrp'

在您的真實腳本中,我想您可能想做

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

為了正確回答該問題,您得到的實際錯誤會有所幫助。 [更新:在評論中回答。]

另外,請注意,如果查詢長時間運行,則密碼將在“ ps -ef”中顯示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM