Mysql
MySQL 導出使用者用分號“;”最後
我正在嘗試設置從一台伺服器自動導出使用者帳戶以導入另一台伺服器。我正在執行以下命令;
$ mysql -u root -p -B -s -e "show grants for 'myuser'@'localhost';" > user_export.sql $ cat user_export.sql GRANT USAGE ON *.* TO 'myuser'@'localhost' IDENTIFIED BY PASSWORD '*IHIHIHOOEHOEHOH' GRANT SELECT, INSERT, UPDATE, DELETE ON `mydb`.* TO 'myuser'@'localhost'
這裡的問題是這些 SQL 語句不以 ; 結尾。所以我無法使用以下命令將其導入另一台遠端伺服器:
$ mysql -u root -p -D mydb < user_export.sql
我知道我可以編寫 bash one-liner 來包裝它並添加一個分號,但我希望能夠在最後得到這些帶有分號的語句,以保持這種美觀、簡單和清晰。
不同尋常的是,有兩種方法可以做到這一點:
選項 #1:使用pt-show-grants / mk-show-grants
Percona 已經把它變成了一個簡單的工具,
;
可以在每條 SQL 語句後附加分號 ( )選項 #2:模擬 pt-show-grants / mk-show-grants
只需使用sed命令附加分號 (
;
)mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
試一試 !!!
我之前提到過這些:
Jul 26, 2011
:將舊備份恢復到最新的 MySQL 版本Dec 24, 2012
:備份和恢復“mysql”數據庫