![备份MySQL用户和权限](https://linux22.com/image/522397/%E5%A4%87%E4%BB%BDMySQL%E7%94%A8%E6%88%B7%E5%92%8C%E6%9D%83%E9%99%90.png)
我正在服务器上设置备份程序。我将备份所有文件、mysql 数据库等。我想知道是否有我可以备份的文件或位置,以便能够“恢复”mysql 用户?
答案1
Mysql 用户位于数据库 Mysql 的用户表中,要备份该表,您可以执行以下操作:
mysqldump -u root -p mysql user > UserTableBackup.sql
要备份 mysql 的所有数据库并为每个数据库创建一个文件,您可以执行自己的 shell 脚本,以下几行代码可以帮助您:
# 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
答案2
数据库mysql
本身包含恢复用户和权限所需的所有数据。只需确保您的备份脚本备份了数据库mysql
,您就应该能够轻松恢复它。
答案3
通过运行“mysqldump mysql >filename”备份文件
答案4
除了其他答案之外,您还可以使用此脚本导出除用户之外的所有用户及其权限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