Mysql
備份與 MySQL 特定使用者相關的所有權限
我想從 MySQL 數據庫中備份與特定使用者(例如
u_1
)相關的所有權限,並在另一台伺服器中恢復。如此處所述,The 'mysql' database contains users/privileges/passwords.
因此我必須備份所有mysql
數據庫表中的所有相關數據(mysql.user
,,mysql.db
…)。我可以執行這個命令:$ 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
?
擷取輸出
SHOW GRANTS FOR 'u_1'@localhost; SHOW GRANTS FOR 'u_1'@'%';
(以及涉及的任何其他“主機”。)
然後重播
GRANTs
以在其他地方建立歷史憑據。
通過這個腳本,您可以備份所有 mysql 的使用者,除了
root
:mysql -BNe "select concat('\'',user,'\'@\'',host,'\'') from mysql.user where user != 'root'" | \ while read uh; do mysql -BNe "show grants for $uh" | sed 's/$/;/; s/\\\\/\\/g'; done > grants.sql
因此,如果您只需要導出特定使用者,例如 (
u_1
)mysql -BNe "select concat('\'',user,'\'@\'',host,'\'') from mysql.user where user = 'u_1'" | \ while read uh; do mysql -BNe "show grants for $uh" | sed 's/$/;/; s/\\\\/\\/g'; done > grants.sql
您可以通過以下方式恢復它:
mysql -u root <grants.sql