MaxScale: не удалось получить имена баз данных

При запуске maxscale, я получаю следующую ошибку:

...
2017-01-17 20:26:05   debug  : qc_sqlite: Token 34 not handled explicitly.
2017-01-17 20:26:05   debug  : qc_sqlite: Token 103 not handled explicitly.
2017-01-17 20:26:05   debug  : qc_sqlite: Token 216 not handled explicitly.
2017-01-17 20:26:05   notice : Loaded module maxscaled: V2.0.0 from /usr/lib64/maxscale/libmaxscaled.so
2017-01-17 20:26:05   notice : Listening connections at /tmp/maxadmin.sock with protocol MaxScale Admin
2017-01-17 20:26:05   debug  : 140414757828672 [poll_add_dcb] Added dcb 0x1ad27f0 in state DCB_STATE_LISTENING to poll set.
2017-01-17 20:26:05   notice : Using encrypted passwords. Encryption key: '/var/lib/maxscale/.secrets'.
2017-01-17 20:26:05   error  : Failed to retrieve database names:
2017-01-17 20:26:05   error  : Shard Router: Unable to load database grant information, MaxScale authentication will proceed without including database permissions. See earlier error messages for user '*******' for more information.
2017-01-17 20:26:05   error  : Failed to retrieve database names:
2017-01-17 20:26:05   error  : Shard Router: Unable to load database grant information, MaxScale authentication will proceed without including database permissions. See earlier error messages for user '*******' for more information.

Я включил отладку, и все еще не могу увидеть, что такое «более раннее» сообщение!!
Я могу подключиться к серверам с помощью настроенной учетной записи, и я запускаю шоу баз данных без каких-либо проблем.

Базы данных находятся в RDS.

Есть идеи?

Спасибо

2 ответа

  1. Не важно, что maxscale смог запустить «show databases», ему нужен явный грант для show databases, поскольку он работает:

    SELECT * 
    FROM   ( 
       ( 
              SELECT Count(1) AS ndbs 
              FROM   information_schema.schemata) AS tbl1, 
       ( 
              SELECT grantee, 
                     privilege_type 
              FROM   information_schema.user_privileges 
              WHERE  privilege_type='SHOW DATABASES' 
              AND    REPLACE(grantee, '\'','')=CURRENT_USER()) AS tbl2);
    

    Таким образом, без конкретного предоставления этого priv запрос ничего не вернет.

  2. Требования к грантам для пользователей MaxScale описаны в учебнике MaxScale .

    Необходимые гранты для maxuser@%пользователя:

    GRANT SELECT ON mysql.user TO 'maxuser'@'%';
    GRANT SELECT ON mysql.db TO 'maxuser'@'%';
    GRANT SELECT ON mysql.tables_priv TO 'maxuser'@'%';
    GRANT SHOW DATABASES ON *.* TO 'maxuser'@'%';
    GRANT REPLICATION CLIENT ON *.* TO 'maxuser'@'%';