MySQL Query可以计算用户拥有多少个数据库?

时间:2012-06-03 00:35:16

标签: mysql

是否有类似

的查询

伪码:

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

或任何做这项工作的查询?

5 个答案:

答案 0 :(得分:10)

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中的数据库没有“所有者”之类的东西,上述查询将显示有关用户具有访问权限的数据库的信息。

答案 1 :(得分:1)

  

据我所知,MySQL在数据库或其对象的“所有者”中没有概念,就像在MS Access和MS SQL Server中一样。我推测这是因为mysql系统表中缺少“所有者”字段。 (http://www.wideman-one.com/gw/tech/mysql/perms/index.htm)

答案 2 :(得分:1)

您可以计算mysql数据库和db表中与用户关联的数据库的数量。这是我能想到的最接近用户对数据库的“所有权”。

SELECT count(DISTINCT Db) FROM db WHERE User = 'someuser'; 

答案 3 :(得分:0)

使用:

SHOW DATABASES

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

阅读SHOW DATABASES Syntax,以便更好地了解您可以取得的成就。

答案 4 :(得分:0)

您运行sql,然后您会看到表的所有者用户。

sql是select * from information_schema. SCHEMA_PRIVILEGES where TABLE_SCHEMA='myUser'

Details about information_schema.SCHEMATA