Mysql

導出所有 MySQL 使用者

  • August 7, 2018

我需要導出所有 MySQL 數據庫使用者(包括權限)以進行遷移。有超過 5,000 個使用者,最好的方法是什麼?

我應該把mysql.user桌子倒掉嗎?

如果您要將使用者移動到另一個執行相同主要版本 MySQL 的數據庫伺服器,則複製mysql.user是不夠的。如果使用者有權訪問特定數據庫,mysql.user則複製會帶來使用者和密碼。

然後,您必須複製以下內容

  • mysql.db用於數據庫級授權
  • mysql.tables_priv對於表級授權
  • mysql.columns_priv對於列級授權

這是轉儲它的合乎邏輯的方法:作為 SQL GRANT 命令!

建議 #1

如果你已經安裝了 Percona Toolkit,執行pt-show-grants到一個文本文件

GRANT_FILE=MyDatabaseUSers.sql
pt-show-grants -uroot -p > ${GRANT_FILE}

建議 #2

如果您沒有 Percona Toolkit 並且迫不及待,這是我個人的模擬

GRANT_CMDS=/tmp/ShowGrantsToExport.sql
GRANT_FILE=MyDatabaseUSers.sql
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
SQL="SELECT CONCAT('SHOW GRANTS FOR ',QUOTE(user),'@',QUOTE(host),';')"
SQL="${SQL} FROM mysql.user WHERE user<>'' AND host<>''"
mysql ${MYSQL_CONN} -ANe"${SQL}" > ${GRANT_CMDS}
mysql ${MYSQL_CONN} < ${GRANT_CMDS} | sed 's/$/;/g' > ${GRANT_FILE}

結語

在新的數據庫伺服器上,遷移數據後,以 root 身份登錄 mysql 並執行

mysql> source MyDatabaseUSers.sql

試一試 !!!

引用自:https://dba.stackexchange.com/questions/95928