Mysql
導出所有 MySQL 使用者
我需要導出所有 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
試一試 !!!