Как создать пользователя в Oracle 11g и предоставить разрешения - PullRequest
76 голосов
/ 25 февраля 2012

Может кто-нибудь посоветовать мне, как создать пользователя в Oracle 11g и предоставить ему только возможность выполнять только одну хранимую процедуру и таблицы в этой процедуре.сделай это!

Ответы [ 8 ]

85 голосов
/ 25 февраля 2012

Подключиться как СИСТЕМА.

CREATE USER username IDENTIFIED BY apassword;

GRANT CONNECT TO username;

GRANT EXECUTE on schema.procedure TO username;

Вам также может понадобиться:

GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;

к тем таблицам, которые использует процедура.

25 голосов
/ 10 марта 2014

Выполните следующие шаги для создания пользователя в Oracle.- Подключиться как системный пользователь

CONNECT <USER-NAME>/<PASSWORD>@<DATABASE NAME>;

- Создать запрос пользователя

CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>;

- Предоставить роли

GRANT CONNECT,RESOURCE,DBA TO <USER NAME>;

- Предоставить привилегии

GRANT CREATE SESSION GRANT ANY PRIVILEGE TO <USER NAME>;
GRANT UNLIMITED TABLESPACE TO <USER NAME>;

- Предоставить доступ к таблицам.

GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>;
21 голосов
/ 26 февраля 2012

Документация Oracle является всеобъемлющей, онлайн и бесплатной.Вы должны научиться использовать его.Вы можете найти синтаксис для CREATE USER здесь и для GRANT здесь ,

Для подключения к базе данных нам нужно предоставить пользователю CREATEСессия привилегии .

Чтобы разрешить права нового пользователя для хранимой процедуры, нам нужно предоставить привилегию EXECUTE.Лицо, предоставляющее право, должно быть одним из них:

  • владелец процедуры
  • пользователь, которому предоставлено выполнение этой процедуры с опцией WITH ADMIN
  • пользователь с GRANT ANYПривилегия OBJECT
  • администратор БД или другая учетная запись суперпользователя.

Обратите внимание, что нам обычно не нужно предоставлять права на объекты, используемые хранимой процедурой, чтобы использовать процедуру.Разрешение по умолчанию состоит в том, что мы выполняем процедуру с теми же правами, что и владелец процедуры, и как бы наследуем их права при выполнении процедуры.Это охватывается предложением AUTHID.По умолчанию это определитель (т.е. владелец процедуры).Только если AUTHID установлен в CURRENT_USER (вызывающий, то есть наш новый пользователь), мы должны предоставлять права на объекты, используемые процедурой. Узнайте больше .

10 голосов
/ 09 февраля 2015

Не используйте эти подходы в критических условиях, таких как TEST и PROD. Ниже приведены только шаги для местной среды. Для моего локального хоста я создаю пользователя с помощью этих шагов:

ВАЖНОЕ ПРИМЕЧАНИЕ: Создайте своего пользователя с учетными данными пользователя SYSTEM. В противном случае вы можете столкнуться с проблемой при запуске нескольких приложений в одной базе данных.

 CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.

Затем запустите скрипт ниже

CREATE USER <<username>> IDENTIFIED BY <<password>>; -- create user with password
GRANT CONNECT,RESOURCE,DBA TO <<username>>; -- grant DBA,Connect and Resource permission to this user(not sure this is necessary if you give admin option)
GRANT CREATE SESSION TO <<username>> WITH ADMIN OPTION; --Give admin option to user
GRANT UNLIMITED TABLESPACE TO <<username>>; -- give unlimited tablespace grant

РЕДАКТИРОВАТЬ: Если у вас возникли проблемы с oracle ora-28001, срок действия пароля истек, и это может быть полезно запустить

select * from dba_profiles;-- check PASSWORD_LIFE_TIME 
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
4 голосов
/ 24 сентября 2016

Как уже неоднократно упоминалось в комментариях, Oracle не рекомендует использовать роли CONNECT, RESOURCE и DBA.

Вы должны подключиться как SYS, чтобы создать свою роль ипользователь (ы), которым дана эта роль.Вы можете использовать SQL Developer или SQL * Plus по своему усмотрению.Не забудьте упомянуть роль SYSDBA в строке входа в систему.connect_identifier использует разные синтаксисы.

sqlplus sys/<<password>>@<<connect_identifier>> as sysdba

Допустим, у вас есть 12cR1, аналогичный тому, который предоставляется в качестве виртуальной машины с " Oracle Technology Network Day ".Строки подключения могут быть (для подключения к предоставленной PDB):

sqlplus sys/oracle@127.0.0.1/orcl as sysdba
sqlplus sys@"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear

Обратите внимание, что в Unix кавычки должны быть экранированы, иначе они будут использованы оболочкой.Таким образом, " становится \".

Затем вы создаете роль MYROLE и предоставляете ей другие роли или привилегии.Я добавил почти необходимый минимум, чтобы сделать что-то интересное:

create role myrole not identified;
grant create session to myrole;
grant alter session to myrole;
grant create table to myrole;

Далее вы создадите пользователя MYUSER.Строка, следующая за identified by, которая является паролем, чувствительна к регистру.Остальное нет.Вы также можете использовать идентификаторы с разделителями SQL (заключенные в кавычки ") вместо обычных идентификаторов, которые конвертируются в верхний регистр и имеют несколько ограничений.Квота может быть unlimited вместо 20m.

create user myuser identified by myuser default tablespace users profile default account unlock;
alter user myuser quota 20m on users;
grant myrole to myuser;

В конце концов, вы подключитесь как новый пользователь.

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

2 голосов
/ 08 апреля 2013
CREATE USER USER_NAME IDENTIFIED BY PASSWORD;
GRANT CONNECT, RESOURCE TO USER_NAME;
0 голосов
/ 28 марта 2018
CREATE USER books_admin IDENTIFIED BY MyPassword;
GRANT CONNECT TO books_admin;
GRANT CONNECT, RESOURCE, DBA TO books_admin;
GRANT CREATE SESSION GRANT ANY PRIVILEGE TO books_admin;
GRANT UNLIMITED TABLESPACE TO books_admin;
GRANT SELECT, INSERT, UPDATE, DELETE ON schema.books TO books_admin;

https://docs.oracle.com/cd/B19306_01/network.102/b14266/admusers.htm#i1006107 https://chartio.com/resources/tutorials/how-to-create-a-user-and-grant-permissions-in-oracle/

0 голосов
/ 13 декабря 2014
  • шаг 1.

    create user raju identified by deshmukh;

  • шаг 2.

    grant connect , resource to raju;

  • шаг 3.

    grant unlimitted tablespace to raju;

  • step4.

    grant select , update , insert , alter to raju;

...