Кто-нибудь может подсказать мне, как создать пользователя в 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. По умолчанию это definer (т.е. владелец процедуры). Только если AUTHID установлен на CURRENT_USER (вызывающий, то есть наш новый пользователь), нам нужно предоставить права на объекты, используемые процедурой. Подробнее.
Дон'т использовать эти подхода в критической среде, как тест и прод. Ниже шаги являются просто предложил местным условиям. На моем localhost, и я создаю пользователя через следующие действия:
Важное примечание : создать пользователя с учетными данными пользователей системы.В противном случае вы можете столкнуться с проблемой при запуске нескольких приложений на одной и той же базе.
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
Как уже упоминалось несколько раз в комментариях, использование подключиться
, ресурс
и роли дБА
не рекомендуется компанией Oracle.
Вы должны подключить как sys, чтобы создать роль и пользователя(ей), которые дали эту роль. Вы можете использовать разработчик SQL или SQL*Plus, как вы предпочитаете. Не забудьте упомянуть роль sysdba в строке входа. В connect_identifier
использует разные синтаксисы.
sqlplus sys/<<password>>@<<connect_identifier>> as sysdba
Позвольте'ы сказать, что у вас 12cR1 наподобие того, что используется в качестве виртуальной машины С и запах мяты;технологии Oracle Developer сети День&;. Подключение строки может быть (для подключения к представленной в pdb) :
sqlplus sys/[email protected]/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;
Далее создать МОЙ_ЛОГИН пользователя. Строку после
определенныхчто пароль чувствителен к регистру. Остальное нет. Вы также можете использовать идентификаторы с разделителями в SQL (заключено в кавычки
"В) вместо обычных идентификаторов, которые преобразуются ту строчных и с учетом некоторых ограничений. Квота может быть
неограниченноевместо
20м`.
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;
Первый шаг:
Подключение к базе данных через систему/пароль;
второй шаг:
создавайте user имя_пользователя identified by пароль; (синтаксис)
Например, создать manidb пользователей idntified по mypass;
третий шаг:
предоставить подключения,ресурс для имени пользователя; (синтаксис)
Например, предоставить подключения,ресурс manidb;
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/
создать пользователя Раджу определены дешмук;
грант подключения , ресурс Раджу;`
грант табличного пространства ограничены к Раджу;`
грант выбора , обновления , вставки , изменения к Раджу;`