简体   繁体   中英

MaxScale: Failed to retrieve database names

When I start maxscale, I get the following error:

...
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.

I enabled debug, and still can't see what the "earlier" message is!! I can connect to the servers using the configured account, and I run a show databases without any issues.

The databases are in RDS.

Any idea?

Thanks

It didn't matter that the maxscale was able to run "show databases", it needs an explicit grant for show databases as it runs:

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);

So, without specifically grant that priv, the query will return nothing.

The grant requirements for the MaxScale users are described in the MaxScale Tutorial .

The required grants for the maxuser@% user are:

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'@'%';

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM