Хтось може порадити мені, як створити користувача в Oracle 11g і надати цьому користувачеві можливість лише виконувати одну конкретну збережену процедуру та таблиці в цій процедурі.
Я не дуже впевнений, як це зробити!
Відповіді:
Підключіться як СИСТЕМА.
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 тут ,
Для підключення до бази даних нам потрібно надати користувачеві привілей СТВОРИТИ СЕСІЮ .
Щоб дозволити нові права користувача на збережену процедуру, нам потрібно надати привілей EXECUTE. Кондидент повинен бути одним із таких:
Зауважте, що нам зазвичай не потрібно надавати права на об’єкти, що використовуються збереженою процедурою, щоб використовувати процедуру. Дозвіл за замовчуванням полягає в тому, що ми виконуємо процедуру з тими ж правами, що і власник процедури, і як би успадковуємо їх права під час виконання процедури. На це поширюється положення AUTHID. За замовчуванням визначено (тобто власник процедури). Тільки якщо для AUTHID встановлено значення CURRENT_USER (закликач, тобто наш новий користувач), нам потрібно надати права на об’єкти, що використовуються процедурою. Дізнайтеся більше .
Не використовуйте цей підхід у критичному середовищі, як TEST та PROD. Нижче описано лише кроки для місцевого середовища. Для мого localhost я створюю користувача за допомогою таких кроків:
ВАЖЛИВА ПРИМІТКА. Створіть свого користувача з обліковими даними користувача 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
Як уже згадувалося кілька разів в коментарях, використання CONNECT
, RESOURCE
і DBA
ролі бентежить Oracle.
Вам потрібно підключитися як SYS, щоб створити свою роль та користувачів, яким дана ця роль. Ви можете використовувати SQL Developer або SQL * Plus як завгодно. Не забудьте згадати роль SYSDBA у рядку входу. connect_identifier
Використовує різний синтаксис.
sqlplus sys/<<password>>@<<connect_identifier>> as sysdba
Скажімо, у вас є 12cR1, такий як той, що надається як віртуальна машина із " Днем розробника технологій Oracle Technology Network ". Рядки підключення можуть бути (для підключення до наданого 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;
Зрештою ви підключаєтесь як новий користувач.
Зверніть увагу, що ви також можете змінити профіль за замовчуванням або надати інший для налаштування деяких параметрів, таких як термін дії паролів, кількість дозволених невдалих спроб входу тощо.
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 -дозволи-в-оракулі /
Перший крок:
Connect to a database using System/Password;
другий крок:
створити ім’я користувача, ідентифіковане за паролем; (синтаксис)
Ex: create user manidb idntified by mypass;
третій крок:
надати підключення, ресурс для імені користувача; (Синтаксис)
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;
крок4.
grant select , update , insert , alter to raju;
CONNECT
роль має набагато більше привілеїв, ніж випливає з назви.CREATE SESSION
Натомість я волів би надати більше .