Я настраиваю резервные копии на своем сервере. Я собираюсь сделать резервную копию всех файлов, баз данных mysql и т. Д. Мне интересно, есть ли файл или место, где я могу сделать резервную копию, чтобы просто иметь возможность «восстановить» пользователей mysql?
Пользователь Mysql находится в таблице пользователя базы данных Mysql, для резервного копирования этой таблицы вы можете сделать это:
mysqldump -u root -p mysql user > UserTableBackup.sql
Для резервного копирования всей базы данных mysql и создания файла для каждой базы данных вы можете создать свой собственный сценарий оболочки, следуя некоторой строке кода, которая может вам помочь:
# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
echo `date +%Y%m%d_%H_%M_%S` - Backup Mysql Database Started >> /home/Backup/Backup.log
for db in $DBS
do
skipdb=-1
if [ "$IGGY" != "" ];
then
for i in $IGGY
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi
if [ "$skipdb" == "-1" ] ; then
FILE="$MBD/$db.$HOST.$NOW.gz"
# do all inone job in pipe,
# connect to mysql using mysqldump for select mysql database
# and pipe it out to gz file in backup dir :)
echo `date +%Y%m%d_%H_%M_%S` - Backup "$db.$HOST.$NOW.gz" Started >> /home/Backup/Backup.log
$MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS --default-character-set=utf8 $db | $GZIP -9 > $FILE
echo `date +%Y%m%d_%H_%M_%S` - Backup "$db.$HOST.$NOW.gz" Completed ! >> /home/Backup/Backup.log
fi
done
В mysql
Сама база данных содержит все данные, необходимые для восстановления пользователей и разрешений. Просто убедитесь, что ваш сценарий резервного копирования поддерживает mysql
базу данных, и вы сможете легко ее восстановить.
сделайте резервную копию файла, который вы получите, запустив "mysqldump mysql> filename"
В дополнение к другим ответам вы можете использовать этот скрипт только для экспорта всех ваших пользователей и их привилегий, кроме root
пользователь:
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
Итак, TNX для: https://stackoverflow.com/a/9410698/926639