2012-06-08 1 views
1

Мне было интересно, есть ли способ ограничить количество баз данных, которые пользователь может создать в mysql? Я хотел бы дать пользователю право создавать базы данных, но он не должен создавать бесконечное количество баз данных.Максимальное количество баз данных для пользователя в mysql

Спасибо, Герольд

+1

Каков уровень доступа этих пользователей? Можете ли вы обрабатывать создание базы данных с помощью логики приложения, но предоставить пользователю меньше разрешений? – mellamokb

ответ

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') 
Смежные вопросы