Oracle
 sql >> база данни >  >> RDS >> Oracle

Създайте нов потребител на Oracle и дайте привилегии:Синтаксис и примери

В тази статия ще говорим за това как да създадете потребител в Oracle. Ще научите как да добавяте нови потребители на база данни, ще разберете кои допълнителни аспекти включва тази работа:от първоначалното създаване на потребител до изпускането му. Освен това ще намерите някои полезни съвети за работа с IDENTIFY и TABLESPACE клаузи, както и да научите как да GRANT роли и разрешения в Oracle.

Съдържание

  • Как да създадете нов потребител в Oracle
  • Примери за синтаксис на Oracle CREATE USER
  • Как да създадете потребители по подразбиране с настройки по подразбиране
  • Създаване на потребител, идентифициран с клаузи
    • Създаване на потребител, идентифициран чрез клауза за парола
    • Външни и глобални клаузи
  • СЪЗДАДЕТЕ ПОТРЕБИТЕЛ с клауза за пространство за таблици
    • Пространство за таблици по подразбиране
    • Временно пространство за таблици
    • Квота
  • Създаване на потребителски атрибути
    • Профил
    • Изтичане на паролата
    • Заключване на акаунт/Отключване на акаунт
  • Предоставяне на роля на потребителя
  • Предоставяне на разрешение в Oracle
  • Синтаксис на командата GRANT
  • Потребителски права на Oracle
  • Как да създадете и предоставите всички привилегии на потребител на Oracle
  • Как да предоставим привилегия за таблица на потребител в Oracle
  • Създавайте потребители на Oracle и давайте разрешения лесно с dbForge Studio за Oracle
  • Как да изтриете (да изтриете) потребител в Oracle
  • Заключение

Как да създадете нов потребител в Oracle

Преди да започнем, трябва да проверите дали имате необходимите системни привилегии за създаване на потребители. Ако не, уверете се, че сте ги присвоили към вашия акаунт. След това можете да преминете към практическите задачи. Примерите в тази статия се отнасят до версията за създаване на потребител на Oracle 19c, но методите са едни и същи за всички използвани версии на Oracle (включително Oracle 10g, 11g, 12c и др.).

Примери за синтаксис на Oracle CREATE USER

За начало ще разгледаме Oracle CREATE USER синтаксис. Първо, ще обсъдим как да създадем такъв с настройки по подразбиране. След това ще преминем към различните варианти на IDENTIFIED клауза, клауза за пространство за таблици и други особености на CREATE USER синтаксис в Oracle.

Как да създадете потребители по подразбиране с настройки по подразбиране

Винаги е най-добре да започнете с основите. Затова нека се съсредоточим върху CREATE USER командва сам. Както е, той ще създаде потребител с атрибути по подразбиране. По-нататък в тази статия ще разгледаме как да конфигурираме потребителите по-фино и как това повишава безопасността на базата данни като цяло.

Създаване на потребител, идентифициран от клаузи

IDENTIFIED клаузата ви позволява да посочите как базата данни на Oracle удостоверява потребител. Нека разгледаме по-отблизо различни примери за IDENTIFIED синтаксис в Oracle.

Създаване на потребител, идентифициран чрез клауза за парола

В най-простия случай създаваме нов локален потребител под потребителското име. Потребителят ще трябва да въведе паролата, за да влезе в системата:

CREATE USER <username> IDENTIFIED BY <password>;

Потребителското име може да бъде всичко. Въпреки това, паролата трябва да се състои от еднобайтови знаци от набора от знаци на базата данни. Ако наборът от знаци също има многобайтови знаци, това не променя изискването за парола – използвайте само еднобайтови знаци.

CREATE USER visitor
  IDENTIFIED BY psw4visits;

Външни и глобални клаузи

Освен идентифициране чрез парола, можете да използвате едно от двете други средства за удостоверяване на потребителя. Той ще конфигурира външен потребител или глобален потребител. За да го направите, трябва да включите EXTERNALLY или GLOBALLY клауза в CREATE USER Команда на Oracle.

EXTERNALLY позволява създаване на външен потребител. В този случай потребителят се удостоверява от външна система, като операционната система. Например, потребител на база данни на Oracle е потребител на Windows. По този начин те могат да получат достъп до базата данни след удостоверяване от Windows, без да въвеждат други пароли. Работата под външен потребител е стандартна опция за редовни потребители на база данни. Но такива потребители имат само стандартни роли (CONNECT и RESOURCE), без привилегии на администратор или оператор на база данни.

За да създадем външен потребител, ние изпълняваме следния оператор:

CREATE USER external_user1
  IDENTIFIED EXTERNALLY
  DEFAULT TABLESPACE tbs_new_10
  QUOTA 10M ON tbs_new_10
  PROFILE external_user_profile1;

По този начин направихме нов външен потребител за нашата база данни. Името е външен_потребител1. Не е необходима допълнителна парола. Присвоихме на този потребител пространството за таблица по подразбиране tbs_new_10 с квота от 10 Mb. Други ограничения се дефинират от external_user_profile1, приложен към този потребител.

Както споменахме по-рано, различни външни системи могат да поддържат и управляват външни потребители в базата данни на Oracle. Използването на възможностите на операционната система е най-често срещаният вариант. По този начин, ако искаме да създадем външен потребител на база данни, достъпен от системния акаунт в операционната система, трябва само леко да модифицираме нашето изявление. Ще добавим префикса ops$ към потребителското име:

CREATE USER ops$external_user1
  IDENTIFIED EXTERNALLY
  DEFAULT TABLESPACE tbs_new_10
  QUOTA 10M ON tbs_new_10
  PROFILE external_user_profile1;

GLOBALLY позволява създаване на глобални потребители. Това означава, че техните данни за влизане и пароли се съхраняват на Central Oracle Security Server вместо в конкретната база данни. Освен това ролите, присвоени на глобални потребители на този централен сървър, важат за този потребител във всяка база данни. Няма да е необходимо да конфигурирате потребителската роля в отделна база данни. Имайте предвид, че трябва да активирате опцията за единичен вход за глобални потребители.

За да създадем потребител на глобална база данни, използваме следния израз:

CREATE USER global_user1
  IDENTIFIED GLOBALLY AS 'CN=manager, OU=division, O=oracle, C=US'
  DEFAULT TABLESPACE USERS
  QUOTA 10M on USERS;

Сега имаме нов потребител на глобална база данни под името global_user1 . Назначихме ПОЛЗВАТЕЛИ пространство за таблица по подразбиране за този потребител с котировка от 10 милиона.

СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ с клауза за пространство за таблици

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

CREATE USER username
    IDENTIFIED BY password
    DEFAULT TABLESPACE tablespace
    TEMPORARY TABLESPACE tbs_temp_01
    QUOTA {size | UNLIMITED} ON tablespace;

Както виждате, скриптът включва няколко клаузи, които трябва да вземем предвид:

Пространство за таблици по подразбиране

Тази клауза определя пространството за таблици по подразбиране за обекти, създадени от потребителя. В противен случай такива обекти се съхраняват в пространството за таблици по подразбиране на базата данни. Ако няма определени пространства за таблици по подразбиране за тази конкретна база данни, обектите ще влязат в системното пространство за таблици.

Ограничение:не посочвайте локално управляваното временно пространство за таблици (като например отмяна на таблично пространство или управлявано от речник временно пространство за таблици) като потребителско пространство за таблици по подразбиране за създаване на Oracle.

Временно пространство за таблици

Тази клауза определя групата пространство за таблици/пространство за таблици, предназначени да съдържат временните сегменти на потребителя. Без него временните сегменти на тези потребители се съхраняват във временното пространство за таблици по подразбиране на базата данни на системното пространство за таблици. Когато посочите групата на пространството за таблици, включително стойността на tablespace_group_name в скрипта, временните сегменти на потребителите могат да бъдат записани във всяко пространство за таблици от тази група.

Забележка :
Уверете се, че сте посочили временното пространство за таблици със стандартен размер на блока. Това не може да бъде пространството за таблици за отмяна или пространството за таблици с автоматично управление на сегментното пространство.

Квота

Тази клауза определя колко пространство може да задели този потребител в пространството за таблици. Множество QUOTA клаузи в един Oracle CREATE USER командата може да присъства, ако трябва да посочите няколко пространства за таблици.
Клаузата може да включва UNLIMITED дефиниция, за да позволи на този определен потребител да разпредели пространството за таблици толкова, колкото е необходимо, без граници.

Ограничение :QUOTA клаузата не се прилага за временни пространства за таблици.

Създаване на потребителски атрибути

Има допълнителни, незадължителни CREATE USER на Oracle атрибути, които можете да включите в синтаксиса. Разгледайте следния пример:

CREATE USER username
    IDENTIFIED BY password
    [DEFAULT TABLESPACE tablespace]
    [QUOTA {size | UNLIMITED} ON tablespace]
    [PROFILE profile]
    [PASSWORD EXPIRE]
    [ACCOUNT {LOCK | UNLOCK}];

Нека прегледаме тези незадължителни клаузи.

Профил

Тази незадължителна клауза ви позволява да ограничите ресурсите на базата данни за този конкретен потребител наведнъж, когато ограниченията са дефинирани в конкретния профил. Без тази клауза нов потребител автоматично влиза под профила по подразбиране.

Изтичане на паролата

Клаузата е незадължителна, но много администратори на бази данни я задават за по-ефективна сигурност. Ако е включена, тази клауза ще определи принудителната промяна на паролата от страна на потребителя. Обикновено това се случва, когато потребителят се опита да влезе в базата данни за първи път.

Заключване на акаунт/Отключване на акаунт

Можете да използвате една от тези клаузи. С LOCK приложен, Oracle създава потребителския акаунт, но този акаунт няма да има достъп до базата данни. Ако приложите UNLOCK клауза или не посочете нито една от тези две клаузи, акаунтът ще може да се използва наведнъж. Състоянието на отключено е по подразбиране.

CREATE USER оператор с тези допълнителни параметри ще бъде както следва:

CREATE USER visitor
    IDENTIFIED BY migzw23ter
    DEFAULT TABLESPACE tbs_new_10
    QUOTA 50M ON tbs_new_10
    TEMPORARY TABLESPACE tbs_temp_10
    QUOTA 5M ON system 
    PROFILE qualified_user
    PASSWORD EXPIRE;
ACCOUNT UNLOCK	

Тук изявлението създава нов потребител на база данни на Oracle с име посетител , с паролата migzw23ter . На този потребител е присвоено пространството за таблици по подразбиране tbs_new_10 с квота от 50Mb. На този потребител също е разрешено да използва временното пространство за таблици tbs_temp_10 .

Предоставяне на роля на потребителя

Първата стъпка е създаването на потребител. Следващият е да зададете правата на потребителя. На новосъздадения потребител не е позволено да прави нищо, дори да се свързва с базата данни.

Работата с бази данни на Oracle неизбежно включва задачата за създаване на потребители на база данни. Има системните потребителски акаунти, които Oracle създава сам – hr , OE , sys и др. Тези акаунти имат предварително дефинирани конфигурации с права и ограничения. Въпреки това, ежедневната работа винаги ще изисква други потребители.

Едно от задълженията на DBA е да създава допълнителни потребители на база данни. Работата включва конфигуриране на потребителските акаунти, задаване на привилегии и управление на потребителите според бизнес целите.

Предоставяне на разрешение в Oracle

С помощта на GRANT команда, можете да предоставите на потребителите определени привилегии и да конфигурирате ролите им според вашите нужди. В Oracle можете да предоставите разрешението си на други, така че те да могат да манипулират и управляват данните във вашата база данни. GRANT е много мощно изявление с много възможни опции, но основната функционалност е да управлява привилегиите както на потребителите, така и на ролите в цялата база данни.

Синтаксис на командата GRANT

Основният синтаксис на заявката за предоставяне на определени привилегии на потребителя е следният:

GRANT <permission> to <user>;

Потребителски права на Oracle

GRANT командата може да даде на потребителите привилегии да създават, променят, пускат и управляват обекти на база данни. Например, привилегиите за създаване на пространства за таблици и за изтриване на редовете на която и да е таблица в база данни са системни привилегии.

Oracle има повече от 100 системни привилегии, които могат да бъдат намерени в таблицата SYSTEM_PRIVILEGE_MAP.

CLUSTER СЪЗДАВАНЕ/СЪЗДАВАНЕ НА ВСЯКАКВА/ПРОМЕНЯ ВСЯКАКВА/ИЗПУСКАНЕ НА КЛЪСТЕР
БАЗА ДАННИ ПРОМЕНЯ БАЗА ДАННИ, ПРОМЕНИ СИСТЕМАТА, ОДИТНА СИСТЕМА
ИНДЕКС СЪЗДАВАЙТЕ ВСЕКИ/ПРОМЕНЯТЕ ВСЯКАКЪВ/ПРОПУСКАНЕ НА ВСЯКАКВА ИНДЕКС
ПРОФИЛ СЪЗДАВАНЕ/ПРОМЕНИ/ПРОФИЛ
РОЛЯ СЪЗДАВАНЕ/ПРОМЕНЯ ВСЯКАКВА/ИЗПУСКА ВСЯКАКВА/ПРЕДОСТАВЯ ВСЯКАКВА (позволява ОТМЕНЯНЕ)
Сегмент за връщане назад СЪЗДАВАНЕ/ПРОМЕНИ/ПРОИЗВОДЯВАНЕ НА СЕГМЕНТ ЗА ОТМЕНЯНЕ
ПОЛЗВАТЕЛ СЪЗДАВАНЕ/ПРОМЕНИ/СТАНЕ/ИЗПУСКАНЕ НА ПОТРЕБИТЕЛ
ПРЕГЛЕД СЪЗДАВАНЕ/СЪЗДАВАНЕ НА ВСЯКАКЪВ/ИЗПУСКАНЕ НА ВСЯКАКЪВ ИЗГЛЕД
СИНОНИМ СЪЗДАВАНЕ/СЪЗДАВАНЕ НА ВСЕКИ/СЪЗДАВАНЕ НА ПУБЛИЧЕН/ПРОПУСКАНЕ НА ОБЩЕСТВЕН СИНОНИМ
СЕСИЯ СЪЗДАВАНЕ/ПРОМЕНИ/ОГРАНИЧЕНА СЕСИЯ, ПРОМЕНЯНЕ НА РАЗХОДИТЕ НА РЕСУРСА
ТАБЛИЦА СЪЗДАВАНЕ/СЪЗДАВАНЕ НА ВСЯКАКВА/ДА ПРОМЕНЯ ВСЯКАКВА/ПРОПУСКА ВСЯКАКВА/ИЗБЕРЕТЕ ВСЯКАКВА/ИЗБЕРЕТЕ ВСЯКАКВА/ВМЪКВАТЕ ВСЯКАКВА/ДА АКТУАЛИЗИРАТЕ ВСЯКАКВА/ИЗТРАЙТЕ ВСЯКАКВА/ИЗКЛЮЧЕТЕ ВСЯКАКВА ТАБЛИЦА
ПРЯСТО ЗА МАСА СЪЗДАВАНЕ/ПРОМЕНЯ/ПРОПУСКАНЕ/УПРАВЛЕНИЕ НА ПРОСТРАНСТВО ЗА ТАБЛИЦА

Обикновено администраторът на база данни предоставя привилегиите на потребителите. Въпреки това, има случаи, когато администраторът трябва да прехвърли своите потребителски привилегии на Oracle. Това е, когато идват привилегиите на DBA. Ако DBA трябва да предостави системни привилегии на друго лице, това трябва да стане с опцията за администратор:

GRANT create session TO user;
GRANT create session TO user with admin option;
Revoke create session from user;

Освен системните привилегии на Oracle, привилегиите за обекти се предоставят на обекти на база данни:таблици, изгледи, процедури и т.н.

Как да създадете и предоставите всички привилегии на потребителя на Oracle

Първо, трябва да предоставим на нашите потребители системните привилегии да влизат в базата данни. За това използваме следното изявление:

GRANT CREATE SESSION to visitor;

Има много разрешения, които администраторът на базата данни може да предостави на потребителя. Но е от съществено значение да се придържаме към основната концепция за сигурност, която е да даде на потребителите минималните привилегии, необходими за ефективно изпълнение на работата. Ето защо не се препоръчва да се предоставят всички привилегии на потребителя.

Можете да приложите други привилегии едно по едно, всяко чрез отделно изявление. Или е възможно да комбинирате тези разрешения в едно, както е показано по-долу:

GRANT CREATE VIEW, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER to visitor;

Ако на този определен потребител е разрешено да променя таблици, процедури, тригери и т.н., синтаксисът за задаване на необходимата привилегия за всеки случай е по-долу. Отново, бъдете много внимателни, когато позволявате на потребителя да променя елементи, тъй като това разрешение е глобално.

GRANT ALTER ANY TABLE to visitor;
GRANT ALTER ANY PROCEDURE to visitor;
GRANT ALTER ANY TRIGGER to visitor;

За да позволим на потребителя да изтрие елементи, ние използваме следните изрази:

GRANT DELETE ANY TABLE to visitor;
GRANT DROP ANY PROCEDURE to visitor;
GRANT DROP ANY TRIGGER to visitor;
GRANT DROP ANY VIEW to visitor;

Как да предоставим привилегия за таблица на потребител в Oracle

Преди да зададете привилегиите на конкретния потребител, трябва да помислите кои задачи трябва да изпълнява този човек в базата данни. Най-често срещаните сценарии включват създаване на таблици, изгледи, процедури, тригери. Някои случаи изискват възможност за промяна или изтриване на тези елементи. В зависимост от ситуацията, администраторът определя кои системни привилегии да предостави.

Нека разгледаме по-отблизо как да предоставим CREATE TABLE привилегия на потребител в Oracle. Ако сме готови да разрешим на нашия потребител – посетител – за да създадем таблици в базата данни, ще използваме следната заявка:

GRANT CREATE TABLE to visitor;

Създавайте потребители на Oracle и давайте разрешения лесно с dbForge Studio за Oracle

Ако работите с бази данни на Oracle ежедневно и търсите удобна мощна IDE всичко в едно, вашето търсене приключва тук. dbForge Studio за Oracle помага на разработчиците да ускорят PL/SQL кодирането, предоставя гъвкави инструменти за редактиране на данни за управление на данни в базата данни и външни данни.

В тази статия ще създадем потребител на Oracle и ще предоставим привилегии на DBA, използвайки този многофункционален скрипт:

DECLARE
 schema_name VARCHAR2(255):='username1'; -- Insert your username instead of 'username1'
 row_count NUMBER;
BEGIN
 FOR r IN (SELECT sid,serial# FROM v$session WHERE username = schema_name)
 LOOP
   EXECUTE IMMEDIATE 'ALTER SYSTEM DISCONNECT SESSION ''' || r.sid || ',' || r.serial# || ''''||' IMMEDIATE';
   EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || r.sid || ',' || r.serial# || '''';
 END LOOP;

 SELECT count(*) INTO row_count FROM dba_users WHERE username = schema_name;
 IF row_count > 0 THEN
   EXECUTE IMMEDIATE 'DROP USER '||schema_name||' CASCADE';
 END IF;
 EXECUTE IMMEDIATE 'CREATE USER '||schema_name||' IDENTIFIED BY ' || schema_name;
 EXECUTE IMMEDIATE 'GRANT dba TO '|| schema_name;
 EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA = '||schema_name;
END;
/ 

Това, което правим в предоставения скрипт, е:

  • създаване на нов потребител
  • предоставяне на привилегии на DBA на новосъздадения потребител
  • задаване на новосъздадения потребител като потребител по подразбиране за текущата сесия

В Oracle потребителите и схемите са по същество едно и също нещо. Можете да считате, че потребителят е акаунт за свързване към база данни, а схемата е наборът от обекти, които принадлежат на този акаунт. Новосъздадената схема е празна и следователно няма да се показва в Database Explorer .

Нека създадем отдели таблица, за да накарате новия потребител да се появи в списъка. За да направите това, не се колебайте да използвате следния скрипт:

CREATE TABLE departments (
  department_id NUMBER CONSTRAINT PK_DepID PRIMARY KEY,
  department_name varchar2(255) NOT NULL,
  location_id NUMBER  NOT NULL);

Имайте предвид, че не е нужно да отваряте различен SQL документ за тази операция. dbForge Studio за Oracle ви позволява да изпълнявате кода само частично. Просто изберете CREATE TABLE клауза, щракнете с десния бутон и изберете Изпълнение на избор .

Ако имате AutoComit функцията ВКЛ., предишната стъпка ще бъде последната. Ако обаче е изключен, ще трябва да запишете промените. След това, при опресняване на Database Explorer, ще видите username1 в списъка.

Има случаи, когато старите сесии продължават да работят на сървъра. Те могат да попречат на изпълнението на нови команди. В кода по-горе всички стари сесии се намират автоматично и се премахват от сървъра. Ако се наложи да рестартирате текущата си сесия, можете да прекратите връзката или да я прекратите, като използвате една от тези заявки:

  • ALTER SYSTEM DISCONNECT SESSION
  • ALTER SYSTEM KILL SESSION

Как да изтриете (изтриете) потребител в Oracle

В случай, че трябва да премахнете някой потребител по някаква причина, трябва да използвате DROP USER команда със следния синтаксис:

DROP USER <username>;

В нашия тестов случай премахваме потребителя посетител създаден по-рано:

DROP USER visitor;

Има обаче няколко ограничения, на които трябва да обърнете внимание, преди да изхвърлите потребителя:

  • Не можете да премахвате потребители, без да изтриете всички свързани обекти. По този начин трябва да премахнете всички таблици, изгледи, процедури и т.н., които този потребител създаде, преди да продължите към командата DROP.
  • Не можете да премахвате потребители, които са свързани към базата данни. Първо, трябва да изчистите всички сесии, които е имал потребителят. След това можете да пуснете самия потребител.

Има специална команда, която позволява пускането на потребителя с всички негови обекти на база данни наведнъж:

DROP USER <username> CASCADE;

Заключение

Обобщавайки, сега можете да използвате Oracle SQL CREATE USER команда, за да добавите нови потребители, да ги конфигурирате и управлявате. Използвахме примерите за ръчно изпълнение. Въпреки това, възможностите на съвременните софтуерни решения за бази данни на Oracle могат да опростят тази работа, да я направят по-бърза и по-точна. Чувствайте се свободни да опитате dbForge Studio с .

Полезни връзки

  • Настройване на нов потребителски акаунт в Oracle
  • Инструменти за администриране на база данни на Oracle
  • Създайте база данни в Oracle
  • Таблица за преименуване на Oracle
  • Таблица за промяна на Oracle


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Явни JOIN срещу неявни присъединявания?

  2. проблем при намирането на списък с файлове в директорията

  3. Как да копирам или импортирам схеми на Oracle между две различни бази данни на различни сървъри?

  4. Команди за архивиране на RMAN

  5. Има ли система за контрол на версиите за промени в структурата на базата данни?