Linux
如何從 MySQL 導出權限,然後導入到新伺服器?
我知道如何使用 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 修改的。