0

私が達成しようとしていることから始めます。新しいデータベースを追加し、エコー バックして結果を表示するメニュー スクリプトを作成しました。しかし、変数でログインするようには見えません。

私が問題を抱えている部分は次のとおりです。

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

スクリプトなしで試しても問題なく動作します。

助けてください、よろしくお願いします、ジョー

4

2 に答える 2

1

コマンドライン文字列でパスワードを直接指定するには、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

于 2011-03-12T21:15:03.583 に答える
0

シェルスクリプトでは、次のことができます

set -x

実行中のコマンドがどのように見えるかを確認します。

mysql --password="$mysqlrp" を実行する必要があります。'$mysqlrp' -> '$mysqlrp'.

実際のスクリプトでは、おそらくやりたいと思います

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

質問に適切に答えるには、実際に発生するエラーが役立ちます。[更新: コメントで回答しました。]

また、クエリが長時間実行されている場合、パスワードは「ps -ef」で表示されることに注意してください

于 2011-03-12T21:16:56.073 に答える