2010-10-20 2 views
29

Я пытаюсь собрать все параметры, которые мне нужны для mysqldump, для создания всего, что используется моей базой данных приложений, в один скрипт. Сюда входит сама база данных и все пользователи базы данных/пароли/привилегии.Использование пользователей mysqldump и базы данных

У меня есть все, что понял, за исключением пользователя кусок ... вот что я в настоящее время с помощью:

mysqldump -h host -u root -p \ 
    --add-drop-database --routines -B database_name > backup.sql 

Итак, что мне не хватает?

+0

MySQL не будет храниться в 'database_name'. – ceejayoz

+0

Я хотел бы ссылку на [это решение в DBA stackexchange] (http://dba.stackexchange.com/questions/23265/mysql-show-grants-for-all-users/127529#127529). – knocte

ответ

36

Пользователи базы данных/пароли/привилегии хранятся в базе данных mysql и не будут сбрасываться с помощью команды dump. Вы должны добавить эту базу данных, а также в список БД сваливать:

mysqldump ... --routines --databases database_name mysql > backup.sql 

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

mysqldump ... --routines --all-databases > backup.sql 
+0

Perfect - вот что я только что узнал. Я бы предположил, что мы просто предупреждаем людей о том, что сброс/восстановление mysql db vs с использованием связанного с ним сценария может иметь некоторые непреднамеренные эффекты esp. если два сервера не являются зеркальными отображениями друг друга (у них нет одинаковых db на них). –

+0

Помните, что база данных mysql содержит информацию о базах данных, которые вы не можете использовать. Я не знаю, что произойдет, когда вы импортируете эти метаданные в новый сервер базы данных. – Halfgaar

+0

Я действительно хотел наоборот. Я хотел, чтобы все «стандартные» базы данных сбрасывались, но НЕ информация пользователя и т. Д. Поэтому я использовал явный список dbs, а не все dbs, чтобы не сбрасывать db mysql. – BuvinJ

9

Таким образом, я имел фундаментальное непонимание. Пользователи не специфичны для базы данных, но скорее созданы на уровне сервера.

Вы можете просмотреть все существующие пользователи с помощью следующего запроса:

SELECT * FROM mysql.user; 

Зная это, совершенно очевидно, что туздЫшпр не должен ничего с пользователями делать. Однако, если вам нужен ответ на экспорт/импорт пользователей и perms, я предлагаю вам проверить следующую статью - это помогло мне.

http://pento.net/2009/03/12/backing-up-permissions-for-individual-databases/

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

+4

Нет, это было просто дело. Кроме того, если этот пост был тем, что НАСТОЯТЕЛЬНО разрешить вам его решить, тогда вы должны пометить ЭТО ОТВЕТ как «ответ» вместо другого. Просто подумал, что я поделюсь. – jcolebrand

+3

FYI ссылка на ссылку показывает инструкцию SQL, которая дает ошибку с чем-то вроде «Неправильное использование UNION и INTO», решение состоит в том, чтобы переместить INTO в последнюю инструкцию SELECT – knocte

+0

Да, это ответ. Он отвечает, и вам нужно будет использовать свой мозг немного, а не просто копировать мимо команды какого-то парня. – Johny19

19

При демпинг базы данных MySQL, не забывайте: пользователи

--flush-privileges Emit a FLUSH PRIVILEGES statement after dumping the mysql 
        database. This option should be used any time the dump 
        contains the mysql database and any other database that 
        depends on the data in the mysql database for proper 
        restore. 
+0

Вот что сделал трюк для меня. благодаря –