ホームページ  >  記事  >  バックエンド開発  >  Python で MySQL ユーザーをバッチエクスポートおよびインポートする方法

Python で MySQL ユーザーをバッチエクスポートおよびインポートする方法

WBOY
WBOYオリジナル
2016-06-16 08:46:181228ブラウズ

データベースの移行 (A -> B) ではユーザーを移行する必要があり、ユーザー テーブル (mysql.user) には数百のユーザーが含まれています。迅速な移行には 2 つの方法があります:
1. サーバー A の mysql データベースを直接バックアップし、同じバージョンでサーバー B に復元します。
2. データのバージョンが異なる場合 (5.1 -> 5.5)、mysql データベース内の一部のテーブル構造やテーブル データのデフォルト値も異なる可能性があります。 1の方法ですが、最終的には正常に動作しますが、サーバーBのMySQLに影響を与える可能性があるため、少し不安を感じます。この場合、コマンドラインを使用してアカウントを生成する必要があります。最も安全で安全な方法。以下の Python スクリプトを使用してバッチ エクスポートを実行します:

コードをコピー コードは次のとおりです:

#!/bin/env python
# -*- エンコード: utf- 8 -*-
#-------------------------------------- -
# 名前: mysql_user_dump.py
# 目的: ユーザーをバッチでエクスポート
# 作成者: zhoujy
# 作成日: 2013-05-28
#-------- -- ----------------------------------
MySQLdb をインポート

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)

Output_data(conn,rows)




実行: python mysql_user_dump.py

コードをコピーします

コードは次のとおりです:GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168。 234.% ' パスワード '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'; によって識別されました 付与オプションを使用して、*.* のすべての権限をパスワード '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' で識別された 'root'@'localhost' に付与します。

*.* のすべての権限をパスワード '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' で識別された 'root'@'192.168.234.%' に付与します;

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 のテーブルの削除と再構築の操作を必要とせず、最も安全です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。