Permissions

將使用者從 mariadb10.1 遷移到 mysql5.7

  • November 13, 2019

我的公司正在將我們的數據庫從自託管的 mariadb 10.1 遷移到 Google CloudSQL(本質上是 MySQL 5.7)。

轉儲/恢復我們的應用程序模式看起來很簡單。但是,鑑於以下情況,我正在嘗試確定如何遷移我的使用者帳戶:

  • mysql.user 表結構在兩者之間有所不同;我無法轉儲和導入 mysql.user
  • 對於某些使用者,pt-show-grants 不輸出創建使用者的語句。例如,對於某些使用者,pt-show-grants 僅輸出類似 的GRANT INSERT, SELECT, UPDATE ON schema.table TO '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 的使用。主要是由於預設配置,無論如何您都必須為遷移工作。

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