V tomto článku budeme hovořit o tom, jak vytvořit uživatele v Oracle. Dozvíte se, jak přidat nové uživatele databáze, zjistit, jaké doplňkové aspekty tato úloha zahrnuje:od počátečního vytvoření uživatele až po jeho zrušení. Navíc zde najdete několik užitečných tipů pro práci s IDENTIFY
a TABLESPACE
klauzule a také se naučte, jak GRANT
role a oprávnění v Oracle.
Obsah
- Jak vytvořit nového uživatele v Oracle
- Příklady syntaxe Oracle CREATE USER
- Jak vytvořit výchozí uživatele s výchozím nastavením
- Vytvořte uživatele identifikovaného klauzulemi
- Vytvořte doložku o uživateli identifikovaném heslem
- Externí a globální klauzule
- VYTVOŘTE UŽIVATELE pomocí klauzule Tablespace
- Výchozí tabulkový prostor
- Dočasný tabulkový prostor
- Kvóta
- Vytvořte uživatelské atributy
- Profil
- Platnost hesla vyprší
- Zámek/Odemknutí účtu
- Udělit roli uživateli
- Udělování oprávnění v Oracle
- Syntaxe příkazu GRANT
- Uživatelská oprávnění Oracle
- Jak vytvořit a udělit všechna oprávnění uživateli Oracle
- Jak udělit uživateli oprávnění tabulky v Oracle
- Snadné vytváření uživatelů Oracle a udělování oprávnění pomocí dbForge Studio for Oracle
- Jak odstranit (vypustit) uživatele v Oracle
- Závěr
Jak vytvořit nového uživatele v Oracle
Než začneme, musíte zkontrolovat, zda máte potřebná systémová oprávnění k vytváření uživatelů. Pokud ne, ujistěte se, že si je přiřadíte ke svému účtu. Poté můžete přistoupit k praktickým úkolům. Příklady v tomto článku se vztahují k vytvoření uživatele verze Oracle 19c, ale metody jsou stejné pro všechny používané verze Oracle (včetně Oracle 10g, 11g, 12c atd.).
Příklady syntaxe Oracle CREATE USER
Pro začátek se podíváme na Oracle CREATE USER
syntax. Nejprve probereme, jak vytvořit jeden s výchozím nastavením. Poté přejdeme k různým variantám IDENTIFIED
klauzule, klauzule tabulkového prostoru a další zvláštnosti CREATE USER
syntaxe v Oracle.
Jak vytvořit výchozí uživatele s výchozím nastavením
Vždy je nejlepší začít se základy. Zaměřme se tedy na CREATE USER
příkaz sám o sobě. Tak, jak je, vytvoří uživatele s výchozími atributy. Dále se v tomto článku podíváme na to, jak lépe nakonfigurovat uživatele a jak to obecně zvyšuje bezpečnost databáze.
Vytvořit uživatele identifikovaného klauzulemi
IDENTIFIED
klauzule vám umožňuje určit, jak databáze Oracle ověřuje uživatele. Podívejme se blíže na různé příklady IDENTIFIED
syntaxe v Oracle.
Vytvořit klauzuli o uživateli identifikovaném heslem
V nejjednodušším případě vytváříme nového místního uživatele pod uživatelským jménem. Pro přihlášení do systému bude uživatel požádán o zadání hesla:
CREATE USER <username> IDENTIFIED BY <password>;
Uživatelské jméno může být jakékoli. Heslo se však musí skládat z jednobajtových znaků ze znakové sady databáze. Pokud znaková sada obsahuje také vícebajtové znaky, nemění to požadavek na heslo – používejte pouze jednobajtové znaky.
CREATE USER visitor
IDENTIFIED BY psw4visits;
Externí a globální klauzule
Kromě identifikace heslem můžete použít jeden ze dvou dalších způsobů ověření uživatele. Bude to konfigurace externího uživatele nebo globálního uživatele. Chcete-li to provést, musíte zahrnout EXTERNALLY
nebo GLOBALLY
klauzule v CREATE USER
Příkaz Oracle.
EXTERNALLY
umožňuje vytvoření externího uživatele. V tomto případě je uživatel ověřen externím systémem, jako je operační systém. Například uživatel databáze Oracle je uživatel systému Windows. Mohou tedy přistupovat k databázi po ověření systémem Windows bez zadávání dalších hesel. Práce pod externím uživatelem je standardní možností pro běžné uživatele databáze. Ale tito uživatelé mají pouze standardní role (CONNECT a RESOURCE), bez oprávnění správce nebo operátora databáze.
Pro vytvoření externího uživatele provedeme následující příkaz:
CREATE USER external_user1
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE tbs_new_10
QUOTA 10M ON tbs_new_10
PROFILE external_user_profile1;
Tímto způsobem jsme vytvořili nového externího uživatele pro naši databázi. Název je externí_uživatel1. Není potřeba žádné další heslo. Tomuto uživateli jsme přiřadili výchozí tabulkový prostor tbs_new_10 s kvótou 10 Mb. Další omezení jsou definována externím_uživatelským_profilem1 aplikovaným na tohoto uživatele.
Jak jsme již zmínili dříve, různé externí systémy mohou udržovat a spravovat externí uživatele v databázi Oracle. Nejběžnější možností je využití možností operačního systému. Chceme-li tedy vytvořit externího databázového uživatele přístupného ze systémového účtu v operačním systému, stačí náš výpis jen mírně upravit. K uživatelskému jménu přidáme předponu ops$:
CREATE USER ops$external_user1
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE tbs_new_10
QUOTA 10M ON tbs_new_10
PROFILE external_user_profile1;
GLOBALLY
umožňuje vytvářet globální uživatele. To znamená, že jejich přihlašovací jména a hesla jsou uložena na centrálním serveru Oracle Security Server namísto konkrétní databáze. Kromě toho se role přiřazené globálním uživatelům na tomto centrálním serveru vztahují na tohoto uživatele v jakékoli databázi. Nebude nutné konfigurovat uživatelskou roli v samostatné databázi. Všimněte si, že musíte povolit možnost jednotného přihlášení pro globální uživatele.
K vytvoření uživatele globální databáze použijeme následující příkaz:
CREATE USER global_user1
IDENTIFIED GLOBALLY AS 'CN=manager, OU=division, O=oracle, C=US'
DEFAULT TABLESPACE USERS
QUOTA 10M on USERS;
Nyní máme nového uživatele globální databáze pod jménem global_user1 . Přiřadili jsme USERS výchozí tabulkový prostor tomuto uživateli s cenovou nabídkou 10 milionů.
VYTVOŘENÍ UŽIVATELE pomocí klauzule Tablespace
Nyní se podívejme na základní skript pro vytvoření nového uživatele Oracle. Je to níže:
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespace
TEMPORARY TABLESPACE tbs_temp_01
QUOTA {size | UNLIMITED} ON tablespace;
Jak vidíte, skript obsahuje několik klauzulí, které bychom měli vzít v úvahu:
Výchozí tabulkový prostor
Tato klauzule určuje výchozí tabulkový prostor pro objekty vytvořené uživatelem. Jinak jsou takové objekty uloženy ve výchozím tabulkovém prostoru databáze. Pokud pro tuto konkrétní databázi nejsou zadány žádné výchozí tabulkové prostory, objekty se dostanou do systémového tabulkového prostoru.
Omezení:neuvádějte místně spravovaný dočasný tabulkový prostor (jako je například tabulkový prostor pro vrácení zpět nebo dočasný tabulkový prostor spravovaný slovníkem), který má být výchozím tabulkovým prostorem vytvořeným uživatelem Oracle.
Dočasný tabulkový prostor
Tato klauzule určuje skupinu tabulkových/tabulkových prostorů, která má obsahovat dočasné segmenty uživatele. Bez něj jsou dočasné segmenty těchto uživatelů uloženy ve výchozím dočasném tabulkovém prostoru databáze systémového tabulkového prostoru. Když ve skriptu zadáte skupinu tabulkových prostorů včetně hodnoty název_skupiny_tabulkového_prostoru, dočasné segmenty uživatelů lze uložit do libovolného tabulkového prostoru této skupiny.
Poznámka :
Ujistěte se, že jste zadali dočasný tabulkový prostor se standardní velikostí bloku. Nemůže to být tabulkový prostor zpět nebo tabulkový prostor s automatickou správou segmentového prostoru.
Kvóta
Tato klauzule určuje, kolik místa může tento uživatel alokovat v tabulkovém prostoru. Více QUOTA
klauzule v jednom Oracle CREATE USER
příkaz může být přítomen, pokud potřebujete zadat několik tabulkových prostorů.
Klauzule může obsahovat UNLIMITED
definice, která tomuto určitému uživateli umožní alokovat tabulkový prostor podle potřeby, bez omezení.
Omezení :QUOTA
klauzule se nevztahuje na dočasné tabulkové prostory.
Vytvořte uživatelské atributy
Existují další, volitelné Oracle CREATE USER
atributy, které můžete zahrnout do syntaxe. Podívejte se na následující příklad:
CREATE USER username
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace]
[QUOTA {size | UNLIMITED} ON tablespace]
[PROFILE profile]
[PASSWORD EXPIRE]
[ACCOUNT {LOCK | UNLOCK}];
Podívejme se na tyto nepovinné klauzule.
Profil
Tato volitelná klauzule vám umožňuje omezit databázové zdroje pro tohoto konkrétního uživatele najednou, když jsou omezení definována v konkrétním profilu. Bez této klauzule nový uživatel automaticky spadá pod výchozí profil.
Platnost hesla vyprší
Tato klauzule je volitelná, ale mnoho správců databází ji nastavuje pro efektivnější zabezpečení. Pokud je tato klauzule zahrnuta, určí vynucenou změnu hesla na straně uživatele. Obvykle se to stane, když se uživatel poprvé pokusí přihlásit do databáze.
Zámek/Odemknutí účtu
Můžete použít jednu z těchto klauzulí. Pomocí LOCK
Oracle vytvoří uživatelský účet, ale tento účet nebude mít přístup k databázi. Pokud použijete UNLOCK
nebo neuvedete žádnou z těchto dvou doložek, bude účet použitelný najednou. Odemčený stav je výchozí.
CREATE USER
příkaz s těmito dalšími parametry by byl následující:
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
Zde příkaz vytvoří nového uživatele databáze Oracle s názvem návštěvník , s heslem migzw23ter . Tomuto uživateli je přiřazen výchozí tabulkový prostor tbs_new_10 s kvótou 50 Mb. Tento uživatel může také používat dočasný tabulkový prostor tbs_temp_10 .
Udělit roli uživateli
Prvním krokem je vytvoření uživatele. Dalším krokem je nastavení práv uživatele. Nově vytvořený uživatel nesmí nic dělat, ani se připojovat k databázi.
Práce s databázemi Oracle nevyhnutelně zahrnuje úkol vytvářet databázové uživatele. Existují systémové uživatelské účty, které si Oracle vytváří sám – hr , OE , sys , atd. Tyto účty mají předdefinované konfigurace s právy a omezeními. Každodenní práce však bude vždy vyžadovat další uživatele.
Jednou z povinností DBA je vytvářet další uživatele databáze. Úloha zahrnuje konfiguraci uživatelských účtů, nastavení oprávnění a správu uživatelů podle obchodních cílů.
Udělování oprávnění v Oracle
Pomocí GRANT
můžete uživatelům poskytnout určitá oprávnění a nakonfigurovat jejich role podle vašich potřeb. V Oracle můžete udělit své oprávnění ostatním, aby mohli manipulovat a spravovat data ve vaší databázi. GRANT
je velmi výkonný příkaz s mnoha možnými možnostmi, ale hlavní funkcí je správa oprávnění uživatelů i rolí v celé databázi.
Syntaxe příkazu GRANT
Základní syntaxe dotazu pro udělení určitých oprávnění uživateli je následující:
GRANT <permission> to <user>;
Uživatelská oprávnění Oracle
GRANT
může uživatelům udělit oprávnění k vytváření, úpravě, odstraňování a správě databázových objektů. Například oprávnění vytvářet tabulkové prostory a mazat řádky jakékoli tabulky v databázi jsou systémová oprávnění.
Oracle má více než 100 systémových oprávnění, která lze nalézt v tabulce SYSTEM_PRIVILEGE_MAP.
CLUSTER | VYTVOŘIT/VYTVOŘIT JAKÝKOLI/ZMĚNIT JAKÝKOLI/VYHNAT JAKÝKOLI CLUSTER |
DATABÁZE | ALTER DATABASE, ALTER SYSTEM, AUDIT SYSTEM |
INDEX | VYTVOŘIT JAKÝKOLI/ZMĚNIT JAKÝKOLI/PUSTIT JAKÝKOLI INDEX |
PROFIL | VYTVOŘIT/ZMĚNIT/ZRUŠIT PROFIL |
ROLE | VYTVOŘIT/ZMĚNIT JAKÉKOLI/VYHNAT JAKÉKOLI /UDĚLIT JAKÉKOLI (umožňuje ZRUŠIT) |
Vrácený segment | VYTVOŘIT/ZMĚNIT/ZRUŠIT SEGMENT VRÁCENÍ VRÁCENÍ |
UŽIVATEL | VYTVOŘIT/ZMĚNIT/STAŤ SE/ODPADAT UŽIVATELEM |
ZOBRAZIT | VYTVOŘIT/VYTVOŘIT JAKÝKOLI/VYHNAT LIBOVOLNÝ ZOBRAZENÍ |
SYNONYM | VYTVOŘIT/VYTVOŘIT JAKÉKOLI/VYTVOŘIT VEŘEJNÉ/VYHNAT JAKÉKOLI/VYHNAT VEŘEJNÉ SYNONYM |
SESSION | VYTVOŘIT/ZMĚNIT/OMEZENOU RELACI, ZMĚNIT NÁKLADY NA ZDROJE |
TABULKA | VYTVOŘIT/VYTVOŘIT JAKOUKOLIV/ZMĚNIT JAKOUKOLI/VYHNAT JAKOUKOLIV/VYBRAT JAKOUKOLIV/VLOŽIT JAKOUKOLI/AKTUALIZOVAT JAKOUKOLIV/VYMAZAT JAKOUKOLI/ZAMKNOUT JAKOUKOLIV TABULKU |
TABLESPACE | VYTVOŘIT/ZMĚNIT/PUSTIT/SPRAVOVAT TABLESPACE |
Obvykle uživatelům uděluje oprávnění správce databáze. Existují však případy, kdy administrátor potřebuje převést svá uživatelská oprávnění Oracle. V tomto okamžiku přichází na řadu oprávnění DBA. Pokud správce DBA potřebuje poskytnout systémové oprávnění jiné osobě, musí tak učinit pomocí možnosti správce:
GRANT create session TO user;
GRANT create session TO user with admin option;
Revoke create session from user;
Kromě systémových práv Oracle jsou objektová oprávnění udělována databázovým objektům:tabulkám, pohledům, procedurám a tak dále.
Jak vytvořit a udělit všechna oprávnění uživateli Oracle
Nejprve musíme našim uživatelům udělit systémové oprávnění k přihlášení do databáze. K tomu používáme následující příkaz:
GRANT CREATE SESSION to visitor;
Existuje mnoho oprávnění, která může administrátor databáze uživateli poskytnout. Je však nezbytné držet se primárního konceptu zabezpečení, kterým je poskytnout uživatelům minimum oprávnění nezbytných k efektivnímu provádění práce. Proto se nedoporučuje poskytovat uživateli všechna oprávnění.
Další oprávnění můžete aplikovat jedno po druhém, každé samostatným příkazem. Nebo je možné tato oprávnění sloučit do jednoho, jak je uvedeno níže:
GRANT CREATE VIEW, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER to visitor;
Pokud má tento definitivní uživatel povoleno měnit tabulky, procedury, spouštěče atd., syntaxe pro nastavení nezbytných oprávnění pro každý případ je uvedena níže. Opět buďte velmi opatrní, když umožňujete uživateli měnit jakékoli prvky, protože toto oprávnění je globální.
GRANT ALTER ANY TABLE to visitor;
GRANT ALTER ANY PROCEDURE to visitor;
GRANT ALTER ANY TRIGGER to visitor;
Abychom uživateli umožnili mazat prvky, používáme následující příkazy:
GRANT DELETE ANY TABLE to visitor;
GRANT DROP ANY PROCEDURE to visitor;
GRANT DROP ANY TRIGGER to visitor;
GRANT DROP ANY VIEW to visitor;
Jak udělit uživateli oprávnění tabulky v Oracle
Než nastavíte oprávnění pro konkrétního uživatele, měli byste zvážit, jaké úkoly musí tato osoba v databázi provádět. Mezi nejčastější scénáře patří vytváření tabulek, pohledů, procedur, spouštěčů. Některé případy vyžadují možnost tyto prvky změnit nebo odstranit. V závislosti na situaci administrátor definuje, která systémová oprávnění poskytne.
Podívejme se blíže na to, jak udělit CREATE TABLE
oprávnění pro uživatele v Oracle. Pokud jsme ochotni umožnit našemu uživateli – návštěvníkovi – pro vytvoření tabulek v databázi použijeme následující dotaz:
GRANT CREATE TABLE to visitor;
Snadné vytváření uživatelů Oracle a udělování oprávnění pomocí dbForge Studio pro Oracle
Pokud pracujete s databázemi Oracle na denní bázi a hledáte pohodlné all-in-one výkonné IDE, vaše hledání zde končí. dbForge Studio for Oracle pomáhá vývojářům urychlit kódování PL/SQL, poskytuje všestranné nástroje pro úpravu dat pro správu dat v databázi a externích dat.
V tomto článku vytvoříme uživatele Oracle a udělíme oprávnění DBA pomocí tohoto víceúčelového skriptu:
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;
/
V poskytnutém skriptu děláme:
- vytvoření nového uživatele
- udělení práv správce dat nově vytvořenému uživateli
- nastavení nově vytvořeného uživatele jako výchozího pro aktuální relaci
V Oracle jsou uživatelé a schémata v podstatě totéž. Můžete zvážit, že uživatel je účet pro připojení k databázi a schéma je sada objektů, které k tomuto účtu patří. Nově vytvořené schéma je prázdné, a proto se v Průzkumníku databáze nezobrazí .
Vytvořme oddělení aby se nový uživatel objevil v seznamu. Chcete-li to provést, můžete použít následující skript:
CREATE TABLE departments (
department_id NUMBER CONSTRAINT PK_DepID PRIMARY KEY,
department_name varchar2(255) NOT NULL,
location_id NUMBER NOT NULL);
Mějte na paměti, že pro tuto operaci nemusíte otevírat jiný dokument SQL. dbForge Studio for Oracle umožňuje spustit kód pouze částečně. Jednoduše vyberte CREATE TABLE
klauzule, klikněte pravým tlačítkem a zvolte Provést výběr .
Pokud máte AutoComit funkce ON, předchozí krok bude tím posledním. Pokud je však vypnuto, budete muset provést změny. Poté při obnovení Průzkumníka databáze uvidíte uživatelské jméno1 v seznamu.
Existují případy, kdy na serveru zůstávají spuštěny staré relace. Mohou překážet při provádění nových příkazů. Ve výše uvedeném kódu jsou všechny staré relace automaticky umístěny a odstraněny ze serveru. Pokud potřebujete restartovat aktuální relaci, můžete ji odpojit nebo ukončit pomocí jednoho z těchto dotazů:
ALTER SYSTEM DISCONNECT SESSION
ALTER SYSTEM KILL SESSION
Jak odstranit (vypustit) uživatele v Oracle
V případě, že potřebujete z jakéhokoli důvodu odebrat některého uživatele, měli byste použít DROP USER
příkaz s následující syntaxí:
DROP USER <username>;
V našem testovacím případě odstraňujeme uživatele návštěvníka vytvořeno dříve:
DROP USER visitor;
Existuje však několik omezení, kterým musíte věnovat pozornost před vyřazením uživatele:
- Nemůžete odebrat uživatele, aniž byste smazali všechny související objekty. Před pokračováním v příkazu DROP tedy musíte zrušit všechny tabulky, pohledy, procedury atd., které tento uživatel vytvořil.
- Nemůžete odebrat uživatele, kteří jsou připojeni k databázi. Nejprve musíte vymazat všechny relace, které uživatel měl. Poté můžete samotného uživatele upustit.
Existuje speciální příkaz, který umožňuje zahodit uživatele se všemi jeho databázovými objekty najednou:
DROP USER <username> CASCADE;
Závěr
Stručně řečeno, nyní můžete použít Oracle SQL CREATE USER
pro přidání nových uživatelů, jejich konfiguraci a správu. Příklady jsme použili pro manuální provedení. Schopnosti moderních softwarových řešení pro databáze Oracle však mohou tuto práci zjednodušit, zrychlit a zpřesnit. Neváhejte a vyzkoušejte dbForge Studio pomocí .
Užitečné odkazy
- Nastavení nového uživatelského účtu v Oracle
- Nástroje pro správu databáze Oracle
- Vytvořte databázi v Oracle
- Oracle Rename Table
- Oracle Alter Table