MySQL查询以计算用户拥有多少个数据库?

10

有没有类似以下的查询:

伪代码:

SELECT databases FROM mysql.databases WHERE owner = 'myUser'

或者其他可以实现相同功能的查询?

6个回答

12
SELECT COUNT(*) FROM information_schema.SCHEMATA;

(以提问者的身份运行)

SELECT count(*) FROM (
  SELECT DISTINCT TABLE_SCHEMA FROM information_schema.SCHEMA_PRIVILEGES WHERE GRANTEE LIKE("'USERNAME'%") GROUP BY TABLE_SCHEMA
) AS baseview;

(以root用户身份运行)

注意:在MySQL中,没有“所有者”这个概念。上述查询将显示一个用户对某些数据库具有访问权限的信息。


这似乎是我们能够得到的最接近的... 嗯 - Devrim
这是最接近没有“所有者”概念的方式。顺便说一下:第二个查询当然写得很冗长,因为您可能也需要内部查询... - Eugen Rieck

1
据我所知,MySQL中没有像MS Access和MS SQL Server中那样的“数据库所有者”或其对象的概念。我从mysql系统表中任何地方都没有“所有者”字段推断出这一点。(http://www.wideman-one.com/gw/tech/mysql/perms/index.htm)

1
你可以在mysql数据库和db表中计算与用户相关联的数据库数。这是我能想到的最接近“用户拥有数据库”的方式。
SELECT count(DISTINCT Db) FROM db WHERE User = 'someuser'; 

0

0

要显示所有数据库,只需使用以下命令

SELECT * FROM information_schema.SCHEMATA;

0

通过使用:

SHOW DATABASES

除非您拥有全局SHOW DATABASES权限,否则您只能查看具有某种特权的数据库。

阅读SHOW DATABASES Syntax以更好地理解您可以实现什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接