我想知道是否有办法限制用户可以在 mysql 中创建的数据库数量?我想授予用户创建数据库的权利,但他不应该能够创建无限数量的数据库。
谢谢,杰罗德
如果您的用户只授予了他们自己的数据库的权限,您可以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')