В тази статия ще говорим за това как да създадете потребител в 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