Mariadb

使用 Galera 集群從 MariaDB 10.3 升級到 MariaDB 10.4 - mysql.global_priv 表

  • August 13, 2019

我有 3 節點 MariaDB 10.3 Galera Cluster (Ubuntu 14.04),我想將它升級到 MariaDB 10.4 Galera Cluster (Ubuntu 18.04)。

根據https://mariadb.com/kb/en/library/upgrading-from-mariadb-103-to-mariadb-104-with-galera-cluster/滾動升級是可能的(顯然,我需要盡可能少的停機時間)。

我在開發集群上進行了滾動升級 - 我將新伺服器(MariaDB 10.4)添加到集群並刪除了一台舊伺服器(MariaDB 10.3)。重複直到整個集群都在執行 MariaDB 10.4。一切正常,看起來很好。

問題是,在 MariaDB 10.4 中引入了新的身份驗證 mysql 表。根據https://mariadb.com/kb/en/library/authentication-from-mariadb-104/使用者現在應該儲存在mysql.global_priv. 因為我做了滾動升級,myql數據庫從舊節點複製到新節點,所以現在我mysql.global_priv在集群中沒有表。使用者仍然在mysql.users表中。

另一個問題是,當我對 MariaDB 10.4 進行新的獨立安裝時,存在mysql@localhost具有這些權限的作業系統管理員使用者

GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTION

此使用者不在升級後的集群中(顯然是相同的問題,mysql表是從舊節點複製的),但我無法創建此管理員使用者來擺脫debian-sys-maint@localhost

MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTION;
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

所以我的問題是,如何從 MariaDB 10.3 對 MariaDB Galera Cluster 進行乾淨的滾動升級。到 MariaDB 10.4 並在 MariaDB 10.4 中引入所有新功能?任何幫助,將不勝感激。

需要mysql_upgrade在任何升級中執行。

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