Original post: http://anothermysqldba.blogspot.com/2014/04/mysqluserclone-or-just-copy-mysql-users.html
私は最近出会ったMySQLのフォーラム投稿新しいシステムにユーザーを移行する方法を探していました。
これはいくつかの方法を行うことができますが、私はそれが私に遊ぶとデモする機会与えた考え出しmysqlusercloneのツールを。
だから私は、2つのデータベースのみ1ウィキユーザーを持っている。
だから今mysqlusercloneツールを使用する
私は、ユーザーのパスワードを設定しなかったため、パスワードが欠落していることに注意してください。 十分ではありませんOPPS。
付与された新しいパスワードで新しいユーザーアカウントを設定したい場合、それは素晴らしい作品。 私はクローンコマンドの一部として、新しいパスワードを渡されたのでした
しかし、どのような場合、私は、パスワードを知らないのか? 私は、すべてのクライアントがすべての同じパスワードを持つようにしたい。
私はまた、以下のプロセスを行うことができます。
今、私は、同じユーザー、ホストおよびパスワードを取得している。
私は最近出会ったMySQLのフォーラム投稿新しいシステムにユーザーを移行する方法を探していました。
これはいくつかの方法を行うことができますが、私はそれが私に遊ぶとデモする機会与えた考え出しmysqlusercloneのツールを。
だから私は、2つのデータベースのみ1ウィキユーザーを持っている。
root@localhost [(none)]> select VERSION();
+------------+
| VERSION() |
+------------+
| 5.6.10-log |
+------------+
root@localhost [(none)]> show grants for wikiuser@localhost;
+-------------------------------------------------------------------------------------------------------------------+
| Grants for wikiuser@localhost |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wikiuser'@'localhost' IDENTIFIED BY PASSWORD '1e09502e61120480' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, LOCK TABLES ON `wikidb`.* TO 'wikiuser'@'localhost' |
+-------------------------------------------------------------------------------------------------------------------+
select VERSION();
+------------+
| VERSION() |
+------------+
| 5.5.30-log |
+------------+
show grants for wikiuser@localhost;
ERROR 1141 (42000): There is no such grant defined for user 'wikiuser' on host 'localhost'
だから今mysqlusercloneツールを使用する
Usage: mysqluserclone --source=user:pass@host:port:socket
--destination=user:pass@host:port:socket joe@localhost
sam:secret1@localhost
# mysqluserclone
--source=root:<PASSWORD>@localhost:3306
--destination=root:@localhost:3307 wikiuser@localhost wikiuser@localhost
# Source on localhost: ... connected.
# Destination on localhost: ... connected.
# Cloning 1 users...
# Cloning wikiuser@localhost to user wikiuser@localhost
# ...done.
root@localhost [(none)]> select VERSION();
+------------+
| VERSION() |
+------------+
| 5.5.30-log |
+------------+
1 row in set (0.00 sec)
root@localhost [(none)]> show grants for wikiuser@localhost;
+-------------------------------------------------------------------------------------------------------------------+
| Grants for wikiuser@localhost |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wikiuser'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, LOCK TABLES ON `wikidb`.* TO 'wikiuser'@'localhost' |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
付与された新しいパスワードで新しいユーザーアカウントを設定したい場合、それは素晴らしい作品。 私はクローンコマンドの一部として、新しいパスワードを渡されたのでした
mysqluserclone --source=root:<PASSWORD>@localhost:3306
--destination=root:@localhost:3307 wikiuser@localhost
wikiuser:<PASSWORD>@localhost
しかし、どのような場合、私は、パスワードを知らないのか? 私は、すべてのクライアントがすべての同じパスワードを持つようにしたい。
私はまた、以下のプロセスを行うことができます。
- DBの1からの助成金を集める
- 助成金のためにファイルを編集して、私は移動したい
- 安全なSQLを作るために、コメントを追加し、ユーザーのファイルを編集
- DB 2にファイルをロード
select CONCAT('SHOW GRANTS FOR `',USER,'`@',HOST,';') as showgrants FROM mysql.user INTO OUTFILE '/tmp/showgrants.sql';
vi /tmp/showgrants.sql
mysql < /tmp/showgrants.sql > /tmp/user_grants.sql
vi /tmp/user_grants.sql
:%s/Grants for/#Grants for/g
:%s/\n/;\r/g
mysql --port=3307 -u root -p < /tmp/user_grants.sql
> show grants for wikiuser@localhost;
+----------------------------------------------------------------------------------------------------------+
| Grants for wikiuser@localhost |
+----------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wikiuser'@'localhost' IDENTIFIED BY PASSWORD '1e09502e61120480' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, LOCK TABLES ON `wikidb`.* TO 'wikiuser'@'localhost' |
+----------------------------------------------------------------------------------------------------------+
今、私は、同じユーザー、ホストおよびパスワードを取得している。