1

我想知道是否有办法限制用户可以在 mysql 中创建的数据库数量?我想授予用户创建数据库的权利,但他不应该能够创建无限数量的数据库。

谢谢,杰罗德

4

1 回答 1

0

如果您的用户只授予了他们自己的数据库的权限,您可以information_schema.SCHEMA_PRIVILEGES在允许创建之前检查他们已经拥有多少个数据库。但是,要使其正常工作,您必须CREATE DATABASE直接禁止用户,而是通过另一个特权数据库用户在应用程序代码中创建数据库,然后授予用户访问他们新创建的数据库的权限。

SELECT 
  GRANTEE, 
  COUNT(DISTINCT TABLE_SCHEMA) AS NUM_DBS
FROM information_schema.SCHEMA_PRIVILEGES
GROUP BY GRANTEE

如果NUM_DBS大于您的限制,请不要为他们创建新数据库。

请注意,如果您向用户授予他们“拥有”的数据库以外的数据库的权限,您将需要在查询中通过排除那些通过类似的方式来考虑这一点

WHERE TABLE_SCHEMA NOT IN ('other','dbs','you','grant','access','on')
于 2012-06-08T13:49:25.280 回答