web-dev-qa-db-ja.com

MySQLユーザーと権限をバックアップする

サーバーにバックアップ手順を設定しています。すべてのファイル、mysqlデータベースなどをバックアップします。mysqlユーザーを「復元」できるようにするためにバックアップできるファイルまたは場所があるかどうか疑問に思っていますか?

4
Webnet

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
3
aleroot

mysqlデータベース自体には、ユーザーと権限を復元するために必要なすべてのデータが含まれています。バックアップスクリプトがmysqlデータベースをバックアップしていることを確認してください。そうすれば、簡単に復元できるはずです。

1
vmfarms

その他の回答に加えて、このスクリプトを使用して、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

0
shgnInc

「mysqldumpmysql> filename」を実行して取得したファイルをバックアップします

0
monomyth