Сайт Koder.kz сайт для Delphi программистов.

koder.kz

Web or desctop App Developer

Написать

RDB$USER_PRIVILEGES Права пользователей СУБД Firebird (версия не важна)

С наступающими праздниками дорогие читатели, сегодня вновь небольшая заметка о том, как можно получить список пользователей, имеющих доступ к БД. 

Для чего это может быть нужно?

Ну, например, вам нужно знать сколько пользователей сервера СУБД Firebird имеют доступ к определенной БД на этом сервере. Томить текстом не буду, сразу покажу вот такой вот SQL запрос, позволяющий получить список пользователей:

SELECT

DISTINCT RDB$USER_PRIVILEGES.RDB$USER

FROM RDB$USER_PRIVILEGES

WHERE RDB$PRIVILEGE = 'M'

ORDER BY RDB$USER_PRIVILEGES.RDB$USER

Как видите все просто, 1 таблица, какой-то RDB$PRIVILEGE = 'M' и данные у нас ;)

Повторюсь, работает как в 3 Firebird так и в 1. 

В чем соль? Соль в том, что данная таблица хранит в себе информацию о правах пользователей для БД, которой она собственно и принадлежит.

В IB Expert это выглядит так:


Если вдруг вы в своем дереве объектов не видите красным «системные таблицы» тогда:


Просто в свойствах подключения установите галочку «Показывать системные таблицы» 

После этого подключение к БД обновиться и необходимую таблицу, а точней ветка «системные таблицы» станет доступна.

И так, запрос есть, таблица есть, просмотреть ее можно. Что еще можно с ней сделать? Да по сути можно путем редактирования менять права пользователя, группы пользователей в БД, но это уже совсем другая история.

От себя лишь добавлю, что я бы не стал пользоваться таким методом и редактировать системные таблицы вручную, ну по мимо MON$ATTACHMENTS в которой храниться информация о текущих подключениях к вашей БД Firebird, кстати не во всех, точней БД созданная в FB1 такой таблицы MON$ATTACHMENTS не имеет.