新しいMySQLサーバーをセットアップしていますが、既存のサーバー(廃止予定)と同じユーザー名、許可されたホスト、およびパスワードのセットを提供したいと考えています。
Usersテーブルのダンプを実行し、それを新しいサーバーにロードするだけで機能しますか?
それより良い方法はありますか?
oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'
それを行う必要がある場合は、-u $USER
および-p$PASSWORD
要求に応じ
Percona Toolkitを見てみましょう。 pt-show-grants
ツールの説明にすべてが書かれています...
pt-show-grants
は、MySQLユーザーアカウントの許可を抽出、注文、印刷します。なぜこれが欲しいのですか?いくつかの理由があります。
1つ目は、サーバー間でユーザーを簡単に複製することです。最初のサーバーから許可を抽出し、出力を別のサーバーに直接パイプすることができます。
2番目の使用法は、あなたの許可をバージョン管理に入れることです...
mysql
データベースのダンプはおそらく機能しますが、私の経験では、すべてのアクセスを適切に文書化し、GRANT
ステートメントで再度設定する方がはるかに優れています。このようにすると、2つの利点があります。
受け入れられた回答(mysqldumpを使用してmysql.userテーブルをバックアップする)は、新しいサーバーバージョンに移行する場合、非常に危険なアプローチです。
私はこれを以前に行いました(ユーザーをMysql 4からMysql 5.1に移行しました)。後で、データベースユーザーに権限を付与または変更しようとして問題が発生しました。
これは、ここで説明するように、mysql.usersテーブルの構造がmysqlサーバーのバージョン間で異なるために発生します。
https://dba.stackexchange.com/a/16441/18472
したがって、サーバーのバージョンをアップグレードする場合は注意してください。ここにいくつかのヒント:
これはすでにここで解決されています MySQLから権限をエクスポートして、新しいサーバーにインポートするにはどうすればよいですか?
mysqldumpは機能しますが、mysqlデータベースはISAMを使用するため、ディレクトリを新しいサーバーにコピーするだけで済みます。これはさまざまな場所にありますが、mysqlデータベースの最も一般的な場所は/ var/lib/mysql/mysqlです。新しいサーバーでmysqlを停止し、古いディレクトリを邪魔にならない場所に移動して、ディレクトリをコピーして再起動してください。ルートとして標準の場所を使用する例:
# /etc/init.d/mysqld stop
# cd /var/lib/mysql
# mv mysql ../mysql.backup
# rsync -a root@oldserver:/var/lib/mysql/mysql .
# /etc/init.d/mysql start
grantコマンドを実行するのはとても簡単です。みたいです
Database.tableのALLを、「password」で識別される「user」@「Host」に付与します。
そう
「somepass」で識別される「jack」@「localhost」へのデータベースの*。