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

Пользователи хранятся в таблице $USERS, пользователи  могут делать запросы к ней через представление ALL_USERS, а dba через DBA_USERS (через это представление можно также получить доступ к хэшу пароля пользователя и пр.). Вообще представления с префиксом DBA_ доступны только dba (если доступ не выдан кому-либо дополнительно), ALL_ доступны всем, USER_ относится к текущему пользователю.

Пользователям могут быть назначены привилегии. Они бывают системные и объектные.

Cистемные привилегии выданные с опцией WITH ADMIN OPTION пользователю, дают ему право назначать другим пользователям (GRANT) и отбирать (REVOKE) соответствующую привилегию (у себя отобрать нельзя). Системные привилегии пользователя можно запросить через представление DBA_SYS_PRIVS, USER_SYS_PRIVS, список всех системных привилегий можно запросить из таблицы SYSTEM_PRIVILEGE_MAP.

Объектные привилегии даются на объекты (таблицы, столбцы, представления, последовательности). Есть следующие объектные привилегии: ALTER, DELETE, EXECUTE, INDEX, INSERT, REFERENCES, SELECT, UPDATE (не все привилегии применимы ко всем объектам). Соответствующие запросы делаются через DBA_TAB_PRIVS, ALL_TAB_PRIVS, USER_TAB_PRIVS  (привилегии на таблицы), DBA_COL_PRIVS, ALL_COL_PRIVS, USER_COL_PRIVS (привилегии на столбцы). Кроме этого есть еще  представления ALL_TAB_PRIVS_MADE, USER_TAB_PRIVS_MADE  (список привилегий для объектов, которыми владеет пользователь или предоставляет на них привилегии) и ALL_TAB_PRIVS_RECD, USER_TAB_PRIVS_RECD (для объектов, где пользователь является получателем привилегии), для столбцов аналогичные представления с _COL_ вместо _TAB_.

Привилегии можно выдать непосредственно, а можно через роли. Список ролей можно запросить через DBA_ROLES. Список назначенных ролей можно запросить из DBA_ROLE_PRIVS, USER_ROLE_PRIVS.

Ролям в свою очередь можно назначить системные, объектные привилегии, а также назначить привилегии через другую роль. Соответствующие привилегии выданные на роль можно запросить из  ROLE_SYS_PRIVS, ROLE_TAB_PRIVS, ROLE_ROLE_PRIVS. Таким образом привилегии можно назначать через роли каскадно.

Несколько примеров:

создаём пользователя (если роль, то пишем ROLE, а не USER)

CREATE USER oracleuser IDENTIFIED BY oraclepassword;

можно назначить ему табличное пространство сразу и установить ограничения

CREATE USER oracleuser IDENTIFIED BY oraclepassword DEFAULT TABLESPACE example QUOTA 100M on example;

 поменять ограничения для существующего пользователя

ALTER USER oracleuser QUOTA UNLIMTED ON example;

дать системную привилегию [с правом управлять этой привилегией]

GRANT privilege TO oracleuser [WITH ADMIN OPTION];

дать привилегию на объект [с правом передавать привилегию третьим лицам]

GRANT privilege ON scheme.object TO oracleuser [WITH GRANT OPTION];

отозвать привилегию

REVOKE privilege FROM oracleuser;

просмотреть выданные системные привилегии

SELECT * from DBA_SYS_PRIVS where GRANTEE='oracleuser';

удалим пользователя [и все ему принадлежащее]

DROP USER oracleuser [CASCADE];

Желающим разобраться с Oracle подробнее могу посоветовать известную книгу Тома Кайта. Белорусам проще купить на oz.by: Oracle для профессионалов: архитектура, программирование и особенности версий 9i и 10g и 11g, остальным на ozon.ru Oracle для профессионалов: архитектура, программирование и особенности версий 9i и 10g и 11g.

Добавить комментарий
  • Комментарии не найдены