Permissions
將使用者從 mariadb10.1 遷移到 mysql5.7
我的公司正在將我們的數據庫從自託管的 mariadb 10.1 遷移到 Google CloudSQL(本質上是 MySQL 5.7)。
轉儲/恢復我們的應用程序模式看起來很簡單。但是,鑑於以下情況,我正在嘗試確定如何遷移我的使用者帳戶:
- mysql.user 表結構在兩者之間有所不同;我無法轉儲和導入 mysql.user
- 對於某些使用者,pt-show-grants 不輸出創建使用者的語句。例如,對於某些使用者,pt-show-grants 僅輸出類似 的
GRANT INSERT, SELECT, UPDATE ON
schema.
tableTO 'username'@'x'
內容,但由於使用者 ‘username’@‘x’ 在 MySQL5.7 實例上尚不存在,因此失敗。- mariadb10.1 沒有“顯示創建使用者”或等效語句。
有沒有人做過這種舉動並遇到過這個問題?我希望避免為了手動重新創建使用者而對數十個密碼進行瘋狂追逐;其中一些使用者早於我,我沒有分配密碼的記錄。
使用pt-show-grants實用程序生成帳戶和授權的“邏輯轉儲”。如果您只是為每個使用者執行,您可以手動執行相同的操作
show grants for
,但是這個 percona-toolkit 實用程序將使它更容易。除非您有特殊的配置或身份驗證外掛,否則這應該大部分都可以工作(不像嘗試物理轉儲和恢復所有使用者和 priv 表)。但是,在某些情況下(在兼容的權限、角色、外掛中),您可能希望在發送 sql 後查看錯誤或錯過的授權。還要檢查可能導致載入失敗的配置,例如暫時禁用NO_AUTO_USER_CREATE和預設身份驗證外掛(本機,而不是 sha …)。
我最近將 MariaDB 10.1 授權移植到 MySQL 8,它需要一些迭代,例如 unix 套接字身份驗證外掛的不同名稱、預設身份驗證外掛(與原生)以及 VIA 與 WITH 的使用。主要是由於預設配置,無論如何您都必須為遷移工作。