2017-09-24 102 views
0

我想從MySQL數據庫備份與特定用戶相關的所有權限(例如u_1),並在另一臺服務器上恢復該權限。如here,The 'mysql' database contains users/privileges/passwords.所述,所以我必須備份來自mysql數據庫(mysql.usermysql.db,...)的所有表的所有相關數據。我可以運行此命令:備份與MySQL特定用戶相關的所有權限

$ mysqldump -u root --flush-privileges -r mysql.sql -p mysql 

但當然mysql.sql包含所有的用戶和權限

而且我想這個命令:

$ mysqldump -u root -p --where="user.user='u_1'" mysql user> mysql.sql 

但如預期,它僅包含mysql.user表中的行。

有沒有辦法去除u_1以外的其他用戶?

+1

你不喜歡'grep'? –

+0

@JH這是關於「搜索」。 – hasanghaforian

+0

我認爲這個問題可能更適合dba論壇 – Strawberry

回答

3

嘗試這些選項(換行符爲清楚起見):

​​

或者......讓我們把上面的解決方案「的艱辛的道路。」

這應該是最簡單的方法:

$ mysql -u root -p 
    --skip-column-names 
    -e "SHOW GRANTS FOR 'u_1';" 
    > grants.sql 
+0

第一種方法的結果是:'不能執行'SELECT/*!40001 SQL_NO_CACHE */* FROM'db' WHERE user.user ='u_1'': 'where子句'中的未知列'user.user'(1054) ' – hasanghaforian

+0

對不起,應該說'--where =「user ='u_1'」'。 –