Импорт SQL-дампов через bash-скрипт

0

Я пытаюсь импортировать базы данных GZiped MySQL, перечисленные в папке.

Файлы GZiped расположены на .mysqldumps/.

$NAME пытается извлечь имя базы данных (поскольку файлы всегда называются database_name.sql.gz) и передать их в командную строку mysql.

Кроме того, поскольку имя пользователя и имя базы данных одинаковы, тот же аргумент передается ($NAME).

Поскольку файлы GZiped, мы пытаемся zcat их (так что gunzip -c), прежде чем gunzip -c их в mysql.

Полный скрипт:

#!/bin/bash
FILES='.mysqldumps/*'
PASSWORD='MyPassword'

for f in $FILES
do
    NAME=dbprefix_'basename $f .sql.gz'
    echo "Processing $f"
    set -x
    zcat $f | mysql -u "$NAME" -p$PASSWORD "$NAME"
done

Но, когда я запускаю скрипт, он выводит:

./.mysqlimport
Processing .mysqldumps/first_database.sql.gz
+ mysql -u dbprefix_first_database -pMyPassword dbprefix_first_database
+ zcat .mysqldumps/first_database.sql.gz
ERROR 1044 (42000) at line 22: Access denied for user 'dbprefix_first_database'@'localhost' to database 'first_database'

Как вы можете видеть, выбранная база данных является 'first_database' вместо 'dbprefix_first_database' и это просто выдает ошибку corse, и я просто не могу понять, почему $NAME неправильно анализируется как имя базы данных.

Что я делаю неправильно?

  • 0
    Вы уверены, что передаете $NAME как указано в списке? Что если вы укажете -D $NAME ?
  • 0
    Да, я уверен. Тот же результат с -D $NAME . И, как вы можете видеть, $NAME анализируется как dbprefix_first_database в первую очередь (имя пользователя), но не во втором (имя базы данных).
Показать ещё 3 комментария
Теги:

1 ответ

0

После некоторого исследования проблема возникает из DUMP, а не из сценария.

При использовании mysqldump была использована опция --databases которая включает USE 'dbname'; и при импорте это имя использовалось вместо $NAME.

Задача решена!

Ещё вопросы

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