Назад | Перейти на главную страницу

Не удается войти в mysql после вызова mysql из сценария оболочки

(Мой первый вопрос здесь, поэтому, если я нарушаю какие-либо соглашения, я заранее извиняюсь!)

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

#! / bin / sh

# создает таблицы

masteruser = "корень"

masterpassword = "dumbpassword"

# требуется один аргумент в командной строке

если [$ # -ne 3]; затем

echo "Usage: createdb.sh dbname dbuser dbpassword";
exit 1; 

фи

dbname = "$ 1"

dbuser = "$ 2"

dbpassword = "$ 3"

#echo $ dbname

#echo $ dbuser

#echo $ dbpassword

mysql -u "$ masteruser" -p "$ masterpassword" << EOF

создать базу данных $ 1; предоставить все по 1 доллару * до «2 долларов», обозначенных как «3 доллара»;

сбросить привилегии

EOF

Я запускаю это из командной строки следующим образом:

./shellscriptname.sh newdbname newdbuser newdbpassword

После запуска этого сценария (который успешно создает базы данных) несколько раз, когда я пытаюсь подключиться, происходит следующее:

# mysql --user root --password dumbpassword

Введите пароль: ОШИБКА 1049 (42000): Неизвестная база данных dumbpassword

Я не знаю, почему это происходит. (Примечание: после привилегий очистки нет точки с запятой)

Почему он больше не работает? Мне любопытно, так как я не могу найти никаких проблем со своим скриптом. Это тоже не работает:

mysql -u root -p dumbpassword

Мне больше интересно выяснить, почему это произошло, чем решить проблему. Вот я и подумал, что спрошу здесь гуру!

Вы должны использовать следующие

mysql --user root --password=dumbpassword

или

mysql -u root -pdumbpassword

Обратите внимание, что между -p / - password и самим паролем нет пробела.

Правильный формат для входа в mysql:

mysql -u username -p mydbname

Это позволяет вам войти в базу данных mydbname. Вместо этого вы передали пароль в качестве имени базы данных, поэтому mySQL сообщает вам, что не может найти базу данных «dumbpassword»

Попробуй это:

mysql -u username -p

Это позволит вам войти в mysql после запроса пароля, а затем вы можете выбрать базу данных с помощью:

use mydbname

Если вы запустите mysql без переключателей u / p, он подберет имя пользователя и пароль из текущего контекста.