Linux

如何從 MySQL 導出權限,然後導入到新伺服器?

  • January 18, 2021

我知道如何使用 mysqldump 導出/導入數據庫,這很好,但我如何獲得進入新伺服器的權限。

額外的一點是,新數據庫上已經有幾個現有的數據庫,我如何導入舊伺服器權限而不破壞現有的幾個數據庫。

舊伺服器:5.0.67-community

新伺服器:5.0.51a-24+lenny1

編輯:我已經從舊伺服器上轉儲了數據庫“mysql”,現在想知道與新伺服器上的“mysql”數據庫合併的正確方法。

我嘗試使用 phpMyAdmin 直接“導入”,結果出現了關於重複項的錯誤(我已經手動遷移了一個)。

任何人都有合併兩個“mysql”數據庫的優雅方法嗎?

不要弄亂mysql db。除了 users 表之外,還有很多事情要做。您最好的選擇是“ SHOW GRANTS FOR”命令。我的 .bashrc 中有很多 CLI 維護別名和函式(實際上是我在 .bashrc 中獲取的 .bash_aliases)。這個功能:

mygrants()
{
 mysql -B -N $@ -e "SELECT DISTINCT CONCAT(
   'SHOW GRANTS FOR \'', user, '\'@\'', host, '\';'
   ) AS query FROM mysql.user" | \
 mysql $@ | \
 sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/## \1 ##/;/##/{x;p;x;}'
}

第一個 mysql 命令使用 SQL 生成有效的 SQL,該 SQL 通過管道傳輸到第二個 mysql 命令。然後通過 sed 管道輸出以添加漂亮的註釋。

命令中的 $@ 將允許您將其稱為:mygrants –host=prod-db1 –user=admin –password=secret

您可以像這樣使用完整的 unix 工具包:

mygrants --host=prod-db1 --user=admin --password=secret | grep rails_admin | mysql --host=staging-db1 --user=admin --password=secret

這是移動使用者的正確方式。您的 MySQL ACL 是使用純 SQL 修改的。

引用自:https://serverfault.com/questions/8860