sql >> Databáze >  >> RDS >> Oracle

Vytvořte nového uživatele Oracle a udělte oprávnění:Syntaxe a příklady

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


  1. Jakou funkci maskování dat bych měl použít?

  2. Postgres nepoužívá index, když je mnohem lepší volba index scan

  3. JOIN dotazy vs. více dotazů

  4. Seznam účtů přidružených k profilu pošty databáze na serveru SQL Server