Привилегии пользователей назначаются им администратором базы данных и определяют, какие действия над данными и над объектами схемы являются разрешенными.
При контроле привилегий используется имя пользователя базы данных, называемое иногда идентификатором авторизации (Autorization ID). Некоторые СУБД идентифицируют понятие "пользователь" с понятием "учетная запись".
Все объекты пользователя БД входят в его схему. На практике один пользователь, как правило, ассоциируется с одной схемой, хотя стандарт подразумевает, что одному пользователю может принадлежать несколько схем, содержащих взаимосвязанные объекты.
После успешного завершения процедуры идентификации открывается сеанс пользователя и устанавливается соединение с базой данных.
Существуют привилегии двух типов:
- системные привилегии (system privileges), контролирующие общий доступ к базе данных;
- объектные привилегии(object privileges), контролирующие доступ к конкретным объектам базы данных.
Синтаксис, используемый для работы с привилегиями, на практике значительно шире стандарта, но в значительной степени зависит от архитектуры конкретной БД.
Для управления привилегиями определены следующие правила:
- объект принадлежит пользователю, его создавшему (если синтаксисом не указано создание объекта другого пользователя, конечно, при соответствующих полномочиях);
- владелец объекта, согласно стандарту, может изменять привилегии своего объекта (в коммерческих СУБД, таких как Oracle, уровни полномочий представляют собой более сложную иерархию);
- объектная привилегия всегда соотносится с конкретным объектом, а системная - с объектами вообще.
Язык SQL поддерживает следующие привилегии:
- ALTER - позволяет выполнять оператор ALTER TABLE;
- SELECT - позволяет выполнять оператор запроса:
- INSERT - позволяет выполнять добавление строк в таблицу:
- UPDATE - позволяет изменять значения во всей таблице или только в некоторых столбцах;
- DELETE - позволяет удалять строки из таблицы;
- REFERENCES - позволяет устанавливать внешний ключ с использованием в качестве родительского ключа любых столбцов таблицы или только некоторых из них;
- INDEX - позволяет создавать индексы (не входит в стандарт SQL-92);
- DROP - позволяет удалять таблицу из схемы базы данных.