2012-06-03 3 views

ответ

8
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; 

(Run как корень)

Оговорка: Там нет такого понятия, как "Владелец" для базы данных в MySQL, то над запросами будет отображаться информация о базах данных, к которой пользователь имеет доступ.

+0

это выглядит как ближе мы можем получить ... Пфф – Devrim

+0

Это так близко, как вы можете получить без понятия «владелец ». BTW: Второй запрос, конечно, написан так грамотно, поскольку вам может понадобиться и внутренний запрос ... –

1

Насколько я могу судить, в MySQL отсутствует понятие «Владелец» базы данных или ее объектов, как в MS Access и MS SQL Server. Я предполагаю это из-за отсутствия поля «владелец» в любом месте системных таблиц mysql. (Http://www.wideman-one.com/gw/tech/mysql/perms/index.htm)

+0

спасибо за ответ ... – Devrim

0

помощью:

SHOW DATABASES 

Вы можете видеть только базы данных для который у вас есть какая-то привилегия, если у вас нет глобальной лицензии SHOW DATABASES.

Прочтите SHOW DATABASES Syntax, чтобы лучше понять, чего вы можете достичь.

1

Вы можете подсчитать, сколько баз данных связано с пользователем в базе данных mysql и таблице db. Это самое близкое, что я могу придумать для «владения» базы данных пользователем.

SELECT count(DISTINCT Db) FROM db WHERE User = 'someuser'; 
Смежные вопросы