3 つの Galera ノードの ReadWriteSplit として Maxscale を使用しています。ノード 1 はマスターで、他の 2 つはスレーブです。
私は常にマスターでユーザーを作成します:
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.%';"
nod は (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.%';"
そして、エラーは止まります。これはバグですか、それとも私が正しくやっていないのでしょうか?