it-roy-ru.com

Использование mysqldump и пользователей базы данных

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

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

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

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

32
Bobby B

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

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

или просто свалить все

mysqldump ... --routines --all-databases > backup.sql
43
Marc B

При выгрузке базы данных 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.
23
Markus T

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

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

SELECT * FROM mysql.user;

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

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

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

10
Bobby B

Полный процесс для меня при переходе с одной среды разработки Mac OS X на новую.

0) Избавьтесь от новой версии MySQL на новом MacBook

Я случайно установил MySQL 8, поэтому мне пришлось удалить его, потому что он был новее, чем мой старый MacBook.

# Remove binaries
$ brew uninstall mysql

# Remove data/config that is leftover
$ rm -r /usr/local/var/mysql/

1) Установите ту же версию MySQL на новый MacBook

# Install version that matched old MacBook
$ brew install [email protected]

# Because it is an old version, you have to do a special configuration step
$ echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

# Start server
$ mysql.server start

2) Дамп данных на старый MacBook

$ mysqldump -uroot --flush-privileges --routines --all-databases > complete_dump.sql

3) Восстановите данные на новом MacBook

$ mysql -p -uroot < complete_dump.sql
1
PaulMest