Mysql консоль резервного копирования сбой в правильном каталоге с правильным паролем

0

Я использую сервер Ubuntu 16.04 (xenial) с Mysql 14.14. Распространяется 5.7.20 (x86_64) с оберткой EditLine.

У меня есть сайт Wordpress /var/www/html/${domain}/ который я дублировал с помощью cp в /var/www/html/test/ и изменил wp-config.php соответственно.

Я экспортировал резервную копию базы данных из ${domain} следующим образом:

mysqldump -u root -p"${rps}" "${domain}" > /var/www/html/test.sql

Этот файл test.sql весит 22 Мб, как обычная резервная копия сайта, поэтому операция кажется успешной.

Я также зашел в консоль mysql и создал авторизованный пользователь и экземпляр DB с привилегированными правами для test сайта:

CREATE user "test"@"localhost" IDENTIFIED BY "${sps}";
CREATE database test;
GRANT ALL PRIVILEGES ON test.* TO test@localhost;

Примечание: rps и sps означают "пароль пользователя root" и "(mysql)".Повторяющиеся оба показывают правильные значения.

Затем я вернулся к консоли Ubuntu.


Пока что так хорошо, но вот проблема:

Хотя в /var/www/html/ я пытался импортировать свой файл test.sql в соответствующий экземпляр DB:

mysql -u test -p"${sps}" < test.sql

И все же моя операция импорта не удалась.

Я также попробовал этот синтаксис импорта:

mysql -u test -p"${sps}" test < test.sql

Обе операции импорта завершились с той же ошибкой:

ERROR 1045 (28000): доступ запрещен для пользователя 'test' @'localhost' (с использованием пароля: YES)

Мой вопрос

Почему мне будет отказано в доступе, если я использую правильный пароль?

Я подчеркиваю, что я дважды проверял и гарантировал, что ${sps} содержит правильный пароль с помощью echo ${sps}.

Update_1

Хотя этот сеанс включает в себя основные части кода, вы можете просмотреть весь код здесь.

Обновление_2 --- этап

Похоже, что проблема связана с тем, что переменная не расширяется при создании пользователя:

CREATE user "test"@"localhost" IDENTIFIED BY "${sps}";

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

Теги:
database
console
command-line-interface

1 ответ

0
Лучший ответ

Причина этого в том, что переменная $ {sps} не расширилась внутри оболочки Mysql; Оболочка Mysql не является bash и не включает в себя такое поведение расширения переменной (в данном случае подстановки переменных типа).

См. Дополнительные данные и способ справиться с этим здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню