mysqldump命令没有备份权限的功能,作为一个数据库完整的备份,还需要备份权限,备份脚本如下:
#!/bin/bash
MysqlUser=xxx
MysqlPass=xxx
MysqlCharset=utf8
MysqlBinPath=/usr/local/mysql/bin
MYSQL_BIN=$MysqlBinPath/mysql
MYSQL_USER_PASS=" -u$MysqlUser -p$MysqlPass"
MysqlBackupDir=/home/mysql
do_backup_grant_priv()
{
split=\`
special=`$MYSQL_BIN $MYSQL_USER_PASS --default-character-set=$MysqlCharset -Bse "select user, host from mysql.user;" | grep "$split" |wc -l `
if [ $special -eq 0 ];then
split=\`
else
special=`$MYSQL_BIN $MYSQL_USER_PASS --default-character-set=$MysqlCharset -Bse "select user, host from mysql.user;" | grep -E "'" |wc -l `
if [ $special -eq 0 ];then
split=\'\'
else
echo "Error:the username have special char"
exit
fi
fi
for SQLUSER in `$MYSQL_BIN $MYSQL_USER_PASS --default-character-set=$MysqlCharset -Bse "select concat('$split', user, '$split', '@', '''', host, '''') from mysql.user;"`
do
$MYSQL_BIN $MYSQL_USER_PASS --default-character-set=$MysqlCharset -Bse "show grants for $SQLUSER;" | sed 's/$/;/g' >> $MysqlBackupDir/privileges_backup_`date +%Y%m%d%H`.sql
done
}
do_backup_grant_priv