Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Как создать пользователя с правами на доступ к базе Супермага... : Oracle

27.04.2024 1:24


21.04.2009 17:22
OlegON
 
Иногда требуется создать пользователя, который должен еще и скрипты всяческие пускать. Некоторые даже и править что-то :(
Чтобы не спотыкаться о кучу констрейнтов и процедуры, которые проверяют принадлежность к пользователям Супермага, самое простое - завести его в админском модуле, создать роль:
Код:
CREATE ROLE "SM_EDITOR" NOT IDENTIFIED;
GRANT CREATE DATABASE LINK TO "SM_EDITOR";
GRANT CREATE TABLE TO "SM_EDITOR";
GRANT CREATE VIEW TO "SM_EDITOR";
begin
for c in (select table_name from all_tables where owner='SUPERMAG')
  loop
    begin
      execute immediate
              'GRANT DELETE ON supermag.' || c.table_name || ' to SM_EDITOR';
      execute immediate
              'GRANT UPDATE ON supermag.' || c.table_name || ' to SM_EDITOR';
      execute immediate
              'GRANT INSERT ON supermag.' || c.table_name || ' to SM_EDITOR';
      execute immediate
              'GRANT SELECT ON supermag.' || c.table_name || ' to SM_EDITOR';
    exception when others then null;
    end;
  end loop;
end;
/
и грантовать эту роль новому юзеру. Рекомендую не делать эту роль дефолтной, как правило, это приводит к невозможности логона по слишком большому количеству грантованных ролей.
Часовой пояс GMT +3, время: 01:24.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.