sql >> Databasteknik >  >> RDS >> Oracle

Skapa en ny Oracle-användare och bevilja privilegier:syntax och exempel

I den här artikeln kommer vi att prata om hur man skapar en användare i Oracle. Du kommer att lära dig hur du lägger till nya databasanvändare, ta reda på vilka kompletterande aspekter det här jobbet innebär:från det första användarskapandet till att det tas bort. Dessutom hittar du några användbara tips om hur du arbetar med IDENTIFY och TABLESPACE klausuler, samt lär dig hur du GRANT roller och behörigheter i Oracle.

Innehåll

  • Så här skapar du en ny användare i Oracle
  • Oracle CREATE USER Syntaxexempel
  • Hur man skapar standardanvändare med standardinställningar
  • Skapa användare som identifieras av klausuler
    • Skapa User Identified by Password-klausul
    • Externt och globalt klausuler
  • SKAPA ANVÄNDARE med tabellutrymmesklausul
    • Standardtabellutrymme
    • Tillfälligt tabellutrymme
    • Kvot
  • Skapa användarattribut
    • Profil
    • Lösenordet löper ut
    • Kontolås/kontolås
  • Ge roll till användare
  • Ge tillstånd i Oracle
  • GRANT kommandosyntax
  • Oracle-användarrättigheter
  • Hur man skapar och beviljar alla rättigheter till Oracle-användare
  • Hur man beviljar tabellrättigheter till användare i Oracle
  • Skapa Oracle-användare och bevilja behörigheter enkelt med dbForge Studio för Oracle
  • Hur man tar bort (släpp) användare i Oracle
  • Slutsats

Så skapar du en ny användare i Oracle

Innan vi börjar måste du kontrollera om du har nödvändig systembehörighet för att skapa användare. Om inte, se till att få dem tilldelade ditt konto. Därefter kan du gå vidare till de praktiska uppgifterna. Exemplen i den här artikeln hänför sig till versionen av skapa användaren Oracle 19c, men metoderna är desamma för alla Oracle-versioner som används (inklusive Oracle 10g, 11g, 12c, etc.).

Oracle CREATE USER Syntaxexempel

Till att börja med kommer vi att titta på Oracle CREATE USER syntax. Först kommer vi att diskutera hur man skapar en med standardinställningar. Efter det kommer vi att gå vidare till de olika varianterna av IDENTIFIED sats, tabellutrymmessats och andra särdrag hos CREATE USER syntax i Oracle.

Hur man skapar standardanvändare med standardinställningar

Det är alltid bäst att börja med grunderna. Låt oss därför fokusera på CREATE USER kommando av sig själv. Som den är kommer den att skapa en användare med standardattribut. Längre fram i den här artikeln kommer vi att titta på hur man konfigurerar användare mer noggrant och hur det ökar säkerheten för databasen i allmänhet.

Skapa användare som identifieras med klausuler

Den IDENTIFIED sats låter dig ange hur Oracle-databasen autentiserar en användare. Låt oss ta en närmare titt på olika exempel på IDENTIFIED syntax i Oracle.

Skapa användare som identifieras med lösenordsklausul

I det enklaste fallet skapar vi en ny lokal användare under användarnamnet. Användaren kommer att behöva ange lösenordet för att logga in i systemet:

CREATE USER <username> IDENTIFIED BY <password>;

Användarnamnet kan vara vad som helst. Lösenordet måste dock bestå av en-byte-tecken från databasens teckenuppsättning. Om teckenuppsättningen också har flerbytetecken, ändrar den inte lösenordskravet – använd endast enkelbytetecken.

CREATE USER visitor
  IDENTIFIED BY psw4visits;

Externt och globalt klausuler

Förutom att identifiera med lösenord kan du använda ett av de två andra sätten för användarautentisering. Det kommer att konfigurera en extern användare eller en global användare. För att göra det måste du inkludera EXTERNALLY eller GLOBALLY satsen i CREATE USER Oracle kommando.

EXTERNALLY gör det möjligt att skapa en extern användare. I det här fallet autentiseras användaren av ett externt system, såsom operativsystemet. En Oracle-databasanvändare är till exempel en Windows-användare. Således kan de komma åt databasen efter att ha blivit autentiserade av Windows utan att ange andra lösenord. Att arbeta under den externa användaren är ett standardalternativ för vanliga databasanvändare. Men sådana användare har bara standardroller (CONNECT och RESOURCE), utan administratörs- eller databasoperatörsrättigheter.

För att skapa en extern användare, kör vi följande sats:

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

På så sätt har vi skapat en ny extern användare för vår databas. Namnet är extern_användare1. Inget extra lösenord behövs. Vi tilldelade den här användaren standardtabellutrymmet tbs_new_10 med en kvot på 10 Mb. Andra begränsningar definieras av den externa_användarprofil1 som tillämpas på denna användare.

Som vi nämnde tidigare kan olika externa system underhålla och hantera externa användare i Oracle-databasen. Att använda operativsystemets funktioner är det vanligaste alternativet. Om vi ​​vill skapa en extern databasanvändare som är tillgänglig för systemkontot i operativsystemet behöver vi alltså bara ändra vårt uttalande något. Vi lägger till prefixet ops$ till användarnamnet:

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

GLOBALLY gör det möjligt att skapa globala användare. Det betyder att deras inloggningar och lösenord lagras på Central Oracle Security Server istället för den specifika databasen. Roller som tilldelats globala användare på den centrala servern gäller dessutom för denna användare i vilken databas som helst. Det kommer inte att vara nödvändigt att konfigurera användarrollen i en separat databas. Observera att du måste aktivera alternativet för enkel inloggning för globala användare.

För att skapa en global databasanvändare använder vi följande sats:

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

Nu har vi en ny global databasanvändare under namnet global_user1 . Vi tilldelade USERS standardtabellutrymme för den användaren med ett citat på 10M.

SKAPA ANVÄNDARE med Tablespace-klausul

Låt oss nu granska det grundläggande Oracle-skriptet för att skapa nya användare. Det är nedan:

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

Som du ser innehåller skriptet flera satser som vi bör ta hänsyn till:

Standardtabellutrymme

Den här satsen anger standardtabellutrymmet för objekt som skapats av användaren. Annars lagras sådana objekt i databasens standardtabellutrymme. Om det inte finns några standardtabellutrymmen specificerade för just den här databasen, kommer objekten att hamna i systemets tabellutrymme.

Begränsning:ange inte det lokalt hanterade temporära tabellutrymmet (som t.ex. ångra tabellutrymme eller ordbokshanterat temporärt tabellutrymme) som standardtabellutrymmet för Oracle-användare.

Tillfälligt tabellutrymme

Denna klausul specificerar tabellutrymmet/tabellutrymmesgruppen som är avsedd att innehålla användarens temporära segment. Utan det lagras dessa användares temporära segment i den tillfälliga standardtabellytan i databasen för systemets tabellutrymme. När du anger tabellutrymmesgruppen inklusive värdet för tabellutrymmesgruppnamn i skriptet, kan användarnas temporära segment sparas i valfritt tabellutrymme i den gruppen.

Obs :
Se till att ange det tillfälliga tabellutrymmet med standardblockstorlek. Det kan inte vara ångra tabellutrymmet eller tabellutrymmet med automatisk segmentutrymmeshantering.

Kvot

Den här klausulen anger hur mycket utrymme den här användaren kan tilldela i tabellutrymmet. Flera QUOTA satser i en Oracle CREATE USER kommandot kan finnas om du behöver ange flera tabellutrymmen.
Klausulen kan inkludera UNLIMITED definition för att tillåta denna bestämda användare att allokera tabellutrymmet så mycket som behövs, utan gränser.

Begränsning :QUOTA klausulen gäller inte för tillfälliga tabellutrymmen.

Skapa användarattribut

Det finns ytterligare, valfria Oracle CREATE USER attribut som du kan inkludera i syntaxen. Ta en titt på följande exempel:

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

Låt oss granska dessa valfria klausuler.

Profil

Denna valfria klausul låter dig begränsa databasresurserna för denna specifika användare på en gång när begränsningarna är definierade i den specifika profilen. Utan denna klausul hamnar en ny användare automatiskt under standardprofilen.

Lösenordet löper ut

Klausulen är valfri, men många databasadministratörer ställer in den för effektivare säkerhet. Om den ingår kommer denna klausul att avgöra den påtvingade ändringen av lösenordet på användarens sida. Vanligtvis händer det när användaren försöker logga in i databasen för första gången.

Kontolås/kontolås

Du kan använda någon av dessa klausuler. Med LOCK tillämpas skapar Oracle användarkontot, men det kontot har inte åtkomst till databasen. Om du använder UNLOCK eller inte specificera någon av dessa två klausuler, kommer kontot att kunna användas på en gång. Den olåsta statusen är standard.

CREATE USER uttalande med dessa ytterligare parametrar skulle vara som följer:

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	

Här skapar satsen en ny Oracle-databasanvändare med namnet besökare , med lösenordet migzw23ter . Den här användaren tilldelas standardtabellutrymmet tbs_new_10 med en kvot på 50 Mb. Den här användaren tillåts också använda den tillfälliga tabellutrymmet tbs_temp_10 .

Bevilja roll till användare

Det första steget är att skapa en användare. Nästa är att ställa in användarens rättigheter. En nyskapad användare får inte göra någonting, inte ens att ansluta till databasen.

Att arbeta med Oracle-databaser inkluderar oundvikligen uppgiften att skapa databasanvändare. Det finns systemanvändarkonton som Oracle skapar själv – hr , OE , sys , etc. Dessa konton har fördefinierade konfigurationer med rättigheter och begränsningar. Det dagliga arbetet kommer dock alltid att kräva andra användare.

En av DBA:s uppgifter är att skapa ytterligare databasanvändare. Jobbet inkluderar att konfigurera användarkonton, ställa in privilegier och hantera användare enligt affärsmålen.

Bevilja behörighet i Oracle

Genom att använda GRANT kommandot kan du ge användarna vissa privilegier och konfigurera deras roller efter dina behov. I Oracle kan du ge din tillåtelse till andra så att de kan manipulera och hantera data i din databas. GRANT är ett mycket kraftfullt uttalande med många möjliga alternativ, men kärnfunktionen är att hantera privilegierna för både användare och roller i hela databasen.

GRANT Kommandosyntax

Den grundläggande syntaxen för frågan för att bevilja vissa privilegier till användaren är följande:

GRANT <permission> to <user>;

Oracle-användarrättigheter

GRANT kommandot kan ge användarna privilegier att skapa, ändra, släppa och hantera databasobjekt. Till exempel är privilegierna för att skapa tabellutrymmen och att ta bort raderna i en tabell i en databas systembehörigheter.

Oracle har mer än 100 systembehörigheter som kan hittas i tabellen SYSTEM_PRIVILEGE_MAP.

KLUSTER SKAPA/SKAPA NÅGOT/ÄNDRAR NÅGOT/SLÄPP NÅGOT KLUSTER
DATABAS ÄNDRA DATABAS, ÄNDRA SYSTEM, REVISIONSSYSTEM
INDEX SKAPA NÅGOT/ÄNDRAR NÅGOT/SLAPP NÅGOT INDEX
PROFIL SKAPA/ÄNDRAR/SLÄPP PROFIL
ROLL SKAPA/ÄNDRAR NÅGOT/SLÄPP NÅGOT/GIVNA NÅGOT (tillåter ÅTERVÄLLA)
Återställ segment SKAPA/ÄNDRAR/SLÄPP ROLLBACK SEGMENT
ANVÄNDARE SKAPA/ÄNDRA/BLI/SLÄPP ANVÄNDARE
VISA SKAPA/SKAPA NÅGOT/SLÄPP NÅGON VISNING
SYNONYM SKAPA/SKAPA NÅGOT/SKAPA OFFENTLIGT/SLIPPA NÅGOT/SLÄPP OFFENTLIGT SYNONYM
SESSION SKAPA/ÄNDRA/BEGRÄNSAD SESSION, ÄNDRA RESURSKOSTNAD
TABELL SKAPA/SKAPA NÅGON/ÄNDRAR NÅGOT/SLÄPP NÅGOT/VÄLJ NÅGOT/INSTERA NÅGOT/UPPDATERA NÅGON/RADERA NÅGON/LÅS NÅGON TABELL
BORDSPLATS SKAPA/ÄNDRAR/SLÄPP/HANTERA BABELLYTTA

Vanligtvis ger administratören av en databas privilegier till användarna. Det finns dock fall då administratören behöver överföra sina Oracle-användarbehörigheter. Det är då DBA-privilegier kommer in. Om en DBA behöver ge systembehörighet till en annan person måste det göras med admin-alternativet:

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

Förutom Oracle-systemprivilegierna, ges objektprivilegier för databasobjekt:tabeller, vyer, procedurer och så vidare.

Hur man skapar och beviljar alla rättigheter till Oracle-användare

Först måste vi ge våra användare systemprivilegiet att logga in i databasen. Vi använder följande uttalande för det:

GRANT CREATE SESSION to visitor;

Det finns många behörigheter som databasadministratören kan ge användaren. Men det är viktigt att hålla fast vid det primära säkerhetskonceptet, som är att ge användarna det minimum av privilegier som krävs för att göra jobbet effektivt. Det är därför det inte rekommenderas att tillhandahålla alla privilegier till användaren.

Du kan tillämpa andra privilegier en efter en, var och en med ett separat uttalande. Eller så är det möjligt att kombinera dessa behörigheter till en, som visas nedan:

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

Om denna bestämda användare tillåts ändra tabeller, procedurer, utlösare, etc., är syntaxen för att ställa in nödvändig behörighet för varje fall nedan. Återigen, var mycket försiktig när du tillåter användaren att ändra några element, eftersom denna behörighet är global.

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

För att tillåta användaren att ta bort element använder vi följande uttalanden:

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

Hur man beviljar bordsprivilegier till användare i Oracle

Innan du ställer in privilegierna för den specifika användaren bör du överväga vilka uppgifter den personen måste utföra i databasen. De vanligaste scenarierna inkluderar att skapa tabeller, vyer, procedurer, utlösare. Vissa fall kräver möjligheten att ändra eller ta bort dessa element. Beroende på situationen definierar administratören vilka systembehörigheter som ska tillhandahållas.

Låt oss ta en närmare titt på hur man beviljar CREATE TABLE behörighet till en användare i Oracle. Om vi ​​är villiga att tillåta vår användare – besökare – för att skapa tabeller i databasen använder vi följande fråga:

GRANT CREATE TABLE to visitor;

Skapa Oracle-användare och bevilja behörigheter enkelt med dbForge Studio för Oracle

Om du arbetar med Oracle-databaser dagligen och letar efter en bekväm allt-i-ett kraftfull IDE, slutar din sökning här. dbForge Studio för Oracle hjälper utvecklare att snabba upp PL/SQL-kodning, tillhandahåller mångsidiga dataredigeringsverktyg för hantering av data i databaser och externa data.

I den här artikeln kommer vi att skapa en Oracle-användare och ge DBA-privilegier med detta multifunktionsskript:

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;
/ 

Det vi gör i det medföljande skriptet är:

  • skapa en ny användare
  • ge DBA-behörigheter till den nyskapade användaren
  • ställ in den nyskapade användaren som standard för den aktuella sessionen

I Oracle är användare och scheman i huvudsak samma sak. Du kan anse att en användare är ett konto för att ansluta till en databas, och ett schema är den uppsättning objekt som tillhör det kontot. Det nyskapade schemat är tomt och kommer därför inte att visas i Databasutforskaren .

Låt oss skapa en avdelning tabell för att få den nya användaren att visas i listan. För att göra det, använd gärna följande skript:

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

Tänk på att du inte behöver öppna ett annat SQL-dokument för denna operation. dbForge Studio för Oracle låter dig exekvera koden endast delvis. Välj bara CREATE TABLE högerklicka och välj Kör markering .

Om du har AutoComit funktionen PÅ, kommer föregående steg att vara det sista. Men om den är avstängd måste du genomföra ändringarna. Sedan, när du uppdaterar Databas Explorer, kommer du att se användarnamn1 i listan.

Det finns tillfällen då gamla sessioner fortfarande körs på servern. De kan störa exekveringen av nya kommandon. I koden ovan lokaliseras alla gamla sessioner automatiskt och tas bort från servern. Om du skulle behöva starta om din nuvarande session kan du koppla bort eller avbryta den med någon av dessa frågor:

  • ALTER SYSTEM DISCONNECT SESSION
  • ALTER SYSTEM KILL SESSION

Hur man tar bort (släpp) användare i Oracle

Om du behöver ta bort en användare av någon anledning, bör du använda DROP USER kommando med följande syntax:

DROP USER <username>;

I vårt testfall tar vi bort användaren besökare skapat tidigare:

DROP USER visitor;

Det finns dock flera begränsningar som du måste vara uppmärksam på innan du släpper användaren:

  • Du kan inte ta bort användare utan att ta bort alla relaterade objekt. Därför måste du släppa alla tabeller, vyer, procedurer etc. som den här användaren skapade innan du fortsätter till kommandot DROP.
  • Du kan inte ta bort användare som är anslutna till databasen. Först måste du rensa alla sessioner som användaren haft. Efter det kan du släppa användaren själv.

Det finns ett speciellt kommando som gör det möjligt att släppa användaren med alla dess databasobjekt i ett skott:

DROP USER <username> CASCADE;

Slutsats

Sammanfattningsvis kan du nu använda Oracle SQL CREATE USER kommando för att lägga till nya användare, konfigurera och hantera dem. Vi använde exemplen för manuell prestanda. Möjligheterna hos de moderna mjukvarulösningarna för Oracle-databaser kan dock förenkla detta jobb, göra det snabbare och mer exakt. Testa gärna dbForge Studio med en .

Användbara länkar

  • Konfigurera ett nytt användarkonto i Oracle
  • Oracle Database Administration Tools
  • Skapa en databas i Oracle
  • Oracle Rename Table
  • Oracle Alter-tabell


  1. Skapa en tillplattad tabell/vy av en hierarkiskt definierad uppsättning data

  2. MySQL Välj Top N Rader

  3. SQL Server trunkerar tyst varchars i lagrade procedurer

  4. Aggregera funktion över ett givet tidsintervall