Резервное копирование пользователей MySQL - PullRequest
28 голосов
/ 28 февраля 2009

Как сделать резервную копию пользователей MySQL и их привилегий?

Что-нибудь вроде mysqldump?

Я ищу что-то вроде:

mysqldump -d -u root -p MyTable > Schema.sql

Ответы [ 6 ]

38 голосов
/ 23 февраля 2012
mysql -BNe "select concat('\'',user,'\'@\'',host,'\'') from mysql.user where user != 'root'" | \
while read uh; do mysql -BNe "show grants for $uh" | sed 's/$/;/; s/\\\\/\\/g'; done > grants.sql
23 голосов
/ 28 сентября 2012

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

mysqldump -u root -p mysql > mysql.sql

и восстановите базу данных mysql, выполнив

 mysql -uroot -p mysql < mysql.sql

Не забудьте

FLUSH PRIVILEGES

после восстановления дампа.

Надеюсь, это поможет ...

13 голосов
/ 28 февраля 2009

До сих пор в моем опыте работы с MySQL я не видел ничего для резервного копирования пользователей и их привилегий через командную строку.

Но я могу сделать резервную копию этих важных данных, сделав резервную копию mysql

mysqldump -u root -p mysql > mysql.sql
5 голосов
/ 28 февраля 2009

Пользователи и привилегии хранятся в базе данных с именем «mysql». Вы можете использовать mysqldump для резервного копирования таблиц в базе данных с именем «mysql».

1 голос
/ 27 июня 2018

У Percona есть отличный инструмент для этого. pt-show-grants сбросит пользователей и их разрешения, чтобы вы могли легко их перезагрузить.

https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html

0 голосов
/ 27 сентября 2017

вероятно довольно очевидно для командных строк mysql, но для ответа духа выше пришлось добавить -u root -ppassword после обеих команд mysql

mysql -u root -ppassword -BNe "выберите concat ('\' ', пользователь,' \ '@ \' ', хост,' \ '') из mysql.user, где user! = 'Root'" | пока читаешь do mysql -u root -ppassword -BNe "показать гранты для $ uh" | sed 's / $ /; /; s / \\ / \ / г '; сделано> grants.sql;

...