我将 Maxscale 作为 3 个 Galera 节点的 ReadWriteSplit。节点 1 是 MASTER,其他 2 是 SLAVES。
我总是在 master 上创建我的用户:
mysql -e "CREATE DATABASE ${DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;"
mysql -e "CREATE USER IF NOT EXISTS '${DB_NAME}'@'10.1.0.%' IDENTIFIED BY '${DB_PASS}';"
mysql -e "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_NAME}'@'10.1.0.%';"
由于没有重新启动任何点头(出于 MariaDB 升级或其他原因),一切都很好。但是如果节点重新启动,当任何查询命中 SLAVES Maxscale 声称:
error : (2648715) [mariadbbackend] Invalid authentication message from backend 'sql3'. Error code: 1044, Msg : #42000Access denied for user '${DB_NAME}'@'10.1.0.%' to database '${DB_NAME}'
warning: (2648715) [readwritesplit] Refresh rate limit (once every 30 seconds) exceeded for load of users' table.
要修复它,在 MASTER,我需要GRANT ALL PRIVILEGES
再次:
mysql -e "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_NAME}'@'10.1.0.%';"
并且错误停止。这是一个错误还是我做事不正确?