Может ли кто-нибудь посоветовать мне о том, как создать пользователя в Oracle 11g, и предоставить этому пользователю только возможность выполнить одну конкретную хранимую процедуру и таблицы в этой процедуре.
Я не уверен, как это сделать!
Может ли кто-нибудь посоветовать мне о том, как создать пользователя в Oracle 11g, и предоставить этому пользователю только возможность выполнить одну конкретную хранимую процедуру и таблицы в этой процедуре.
Я не уверен, как это сделать!
Подключиться как SYSTEM.
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;
в зависимости от того, какие таблицы использует эта процедура.
Следуйте приведенным ниже инструкциям для создания пользователя в 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>;
Документация Oracle является всеобъемлющей, онлайн и бесплатной. Вы должны научиться его использовать. Здесь вы можете найти синтаксис CREATE USER здесь и GRANT здесь,
Чтобы подключиться к базе данных, нам необходимо предоставить пользователю привилегию CREATE SESSION.
Чтобы разрешить новые права пользователя в хранимой процедуре, нам необходимо предоставить привилегию EXECUTE. Лицо, предоставляющее право, должно быть одним из следующих:
Обратите внимание, что обычно нам не нужно предоставлять права на объекты, используемые хранимой процедурой, чтобы использовать эту процедуру. Разрешение по умолчанию заключается в том, что мы выполняем процедуру с теми же правами, что и владелец процедуры, и как бы наследуем их права при выполнении процедуры. Это рассматривается в предложении AUTHID. По умолчанию используется определитель (т.е. Владелец процедуры). Только если для параметра AUTHID установлено значение CURRENT_USER (invoker, это наш новый пользователь), нам нужно предоставить права на объекты, используемые процедурой. Узнайте больше.
Не используйте этот подход в критической среде, такой как TEST и PROD. Ниже приведены только шаги для локальной среды. Для моего локального хоста я создаю пользователя с помощью следующих шагов:
ВАЖНОЕ ПРИМЕЧАНИЕ: Создайте пользователя с учетными данными пользователя SYSTEM. В противном случае вы можете столкнуться с проблемой при запуске нескольких приложений в одной базе данных.
CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.
Затем выполните ниже script
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
Как уже упоминалось несколько раз в комментариях, использование ролей CONNECT
, RESOURCE
и DBA
не рекомендуется Oracle.
Вам необходимо подключиться как SYS для создания вашей роли и пользователя (пользователей), которому дана эта роль. Вы можете использовать SQL Developer или SQL * Plus по своему усмотрению. Не забудьте указать роль SYSDBA в строке входа. connect_identifier
использует разные синтаксисы.
sqlplus sys/<<password>>@<<connect_identifier>> as sysdba
Скажем, у вас есть 12cR1, как тот, который предоставляется в качестве виртуальной машины, с День разработчиков технологии технологий Oracle". Строки подключения могут быть (для подключения к предоставленному PDB):
sqlplus sys/[email protected]/orcl as sysdba
sqlplus [email protected]"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;
В конце концов, вы подключаетесь как новый пользователь.
Обратите внимание, что вы также можете изменить профиль по умолчанию или предоставить другой вариант для настройки некоторых параметров в качестве срока действия паролей, количества разрешенных неудачных попыток входа в систему и т.д.
CREATE USER USER_NAME IDENTIFIED BY PASSWORD;
GRANT CONNECT, RESOURCE TO USER_NAME;
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/
Первый шаг:
Connect to a database using System/Password;
Второй шаг:
создать имя пользователя, идентифицированное паролем; (Синтаксис)
Ex: create user manidb idntified by mypass;
третий шаг:
grant connect,resource to username; (Syntax)
Ex: grant connect,resource to manidb;
шаг 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;