我有一个用户可以访问多个数据库。
在MariaDB 10.6.11中,我无法使用以下命令列出所有可访问的数据库:
SHOW DATABASES;
/* SQL Error (1227): Access denied; you need (at least one of) the SHOW DATABASES privilege(s) for this operation */
另一方面,我可以使用这个:
SELECT `SCHEMA_NAME` FROM `information_schema`.`SCHEMATA` ORDER BY `SCHEMA_NAME`;
在装有MariaDB 10.5.18的不同服务器上“SHOW DATABASES”工作正常,即使我认为两台服务器上的用户具有相同的权限:
MariaDB 10.6 用户(不允许显示数据库):
SHOW GRANTS FOR 'dev-all'@'localhost';
GRANT USAGE ON *.* TO `dev-all`@`localhost` IDENTIFIED BY PASSWORD '...'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `dev-___`.* TO `dev-all`@`localhost` WITH GRANT OPTION
MariaDB 10.5 用户(允许显示数据库):
SHOW GRANTS FOR 'dev-all'@'localhost';
GRANT USAGE ON *.* TO `dev-all`@`localhost` IDENTIFIED BY PASSWORD '...'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `dev-___`.* TO `dev-all`@`localhost` WITH GRANT OPTION
是不是MariaDB版本不同导致的?还是我错过了其他东西?
不允许用户列出他们所有的数据库有什么意义?我该如何解决 MariaDB 10.6 上的这个问题?
这是由以下 MariaDB 选项引起的:
所以这与MariaDB的版本无关,而是与两台服务器的配置不同有关。
这是一个奇怪的选项,因为用户仍然可以使用: