データベースの移行 (A -> B) ではユーザーを移行する必要があり、ユーザー テーブル (mysql.user) には数百のユーザーが含まれています。迅速な移行には 2 つの方法があります:
1. サーバー A の mysql データベースを直接バックアップし、同じバージョンでサーバー B に復元します。
2. データのバージョンが異なる場合 (5.1 -> 5.5)、mysql データベース内の一部のテーブル構造やテーブル データのデフォルト値も異なる可能性があります。 1の方法ですが、最終的には正常に動作しますが、サーバーBのMySQLに影響を与える可能性があるため、少し不安を感じます。この場合、コマンドラインを使用してアカウントを生成する必要があります。最も安全で安全な方法。以下の Python スクリプトを使用してバッチ エクスポートを実行します:
def get_data(conn):
query = 'mysql.user からユーザー、ホストをユーザー順に選択'
cursor = conn.cursor()
cursor.execute(query)
行=cursor.fetchall()
行を返す
def Output_data(conn,rows):
行内のユーザー、ホストの場合:
クエリ = "'%s'@'%s' の許可を表示" %(user,host)
カーソル= conn.cursor()
「
」を印刷します。
if __name__ =='__main__':
conn = MySQLdb.connect(host='localhost',user='root',passwd='123456',db='mysql',port=3306,charset= 'utf8')
行 = get_data(conn)
実行: python mysql_user_dump.py
GRANT USAGE ON *.* TO 'test'@'192.168.234.%' IDENTIFIED BY PASSWORD '*2A032F7C5BA932872F0F045E0CF6B53CF702F2C5';
GRANT SELECT, INSERT, UPDATE, DELETE ON `test`.* TO 'test' @'192.168.234.%';パスワード '*2A032F7C5BA932872F0F045E0CF6B53CF702F2C5' で識別された 'zzz_test'@'192.168.234.%' に *.* で使用を許可します。
`zzz%` で選択、挿入、更新、削除を許可します。*ズズz_test '@'192.168.234.%';
最後に、B でこれらのコマンドを実行します。スクリプトの実行時に、user.sql などの SQL ファイルにリダイレクトすることもできます。B サーバーのデータベースでソース user.sql を実行すると、インポート作業は完了です。 。
2 番目の方法は、1 のテーブルの削除と再構築の操作を必要とせず、最も安全です。