Bash пользовательский ввод Mysql логин - PullRequest
0 голосов
/ 13 марта 2011

Начну с того, что я пытаюсь достичь. Я написал сценарий меню, чтобы добавить новую базу данных и вернуться к экрану результатов. Но не могу заставить его войти в систему с переменной.

Вот та часть, с которой у меня проблемы:

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

хотя при попытке без скрипта работает нормально.

Пожалуйста, помогите, Заранее спасибо, Джо

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Чтобы ввести пароль непосредственно в строке командной строки, вы должны использовать 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.

0 голосов
/ 13 марта 2011

В сценарии оболочки вы можете выполнить

set -x

, чтобы увидеть, как выглядит выполняемая команда.

Вы должны выполнить команду mysql --password = "$ mysqlrp".'$ mysqlrp' -> '$ mysqlrp'.

В вашем реальном сценарии, я полагаю, вы, вероятно, хотите сделать

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

Чтобы правильно ответить на вопрос, фактическая ошибка, которую выполучить было бы полезно.[ОБНОВЛЕНИЕ: ответ в комментарии.]

Также обратите внимание, что если ваш запрос выполняется долго, ваш пароль будет отображаться в "ps -ef"

...