[mysql] Migrate user account from developing server to testing/production server

主要參考
http://www.uptimemadeeasy.com/linux/mysql-migrate-users-server-server/

建立使用者帳號其實很快,create user xxxx 很快就可以解決,但麻煩的是在權限的部分。
首先要產生使用者的清單,並”產生”列出權限的 sql statement

root@ubuntu:~$ mysql -uroot -N -p -s > mysqluser
Enter password:
select Distinct CONCAT('show grants for `', user, '`@`', host, '`;') as query from mysql.user where user = 'myaccount';
quit

然後可以得到 mysqluser 檔案

root@ubuntu:~$ cat mysqluser 
show grants for `myaccount`@`%`;

然後將 mysqluser 這個 sql statement 餵給 mysql 執行,然後將結果存起來

root@ubuntu:~$ mysql -uroot -N -p -s -r  mysqlgrant
Enter password:
root@ubuntu:~$ cat mysqlgrant 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, INDEX, ALTER, CREATE TEMPORARY TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON *.* TO 'apikey'@'%';
GRANT SELECT, INSERT, UPDATE, DELETE ON `APIKey`.* TO 'apikey'@'%';

要注意的是產生的 grant 命令,每一行最後面要自己補上分號(;)
最後就可以在另一台機器上將權限匯入

root@ubuntu:~$ mysql -uroot -p