sql >> Database teknologi >  >> RDS >> Oracle

Opret en ny Oracle-bruger og giv privilegier:Syntaks og eksempler

I denne artikel vil vi tale om, hvordan man opretter en bruger i Oracle. Du vil lære, hvordan du tilføjer nye databasebrugere, finde ud af, hvilke supplerende aspekter dette job involverer:fra den første brugeroprettelse til at droppe det. Desuden vil du finde nogle nyttige tips til at arbejde med IDENTIFY og TABLESPACE klausuler, samt lære, hvordan du GRANT roller og tilladelser i Oracle.

Indhold

  • Sådan opretter du en ny bruger i Oracle
  • Oracle CREATE USER Syntakseksempler
  • Sådan opretter du standardbrugere med standardindstillinger
  • Opret bruger identificeret ved klausuler
    • Opret brugeridentificeret ved adgangskodeklausul
    • Eksternt og globalt klausuler
  • OPRET BRUGER med Tablespace-klausul
    • Standard Tablespace
    • Midlertidig tabelplads
    • Kvote
  • Opret brugerattributter
    • Profil
    • Adgangskoden udløber
    • Kontolås/Kontolås
  • Tildel rolle til bruger
  • Giv tilladelse i Oracle
  • GRANT kommandosyntaks
  • Oracle-brugerrettigheder
  • Sådan opretter og giver du alle privilegier til Oracle-brugeren
  • Sådan giver man bordprivilegier til brugere i Oracle
  • Opret Oracle-brugere og giv nemt tilladelser med dbForge Studio til Oracle
  • Sådan sletter du (slip) bruger i Oracle
  • Konklusion

Sådan opretter du en ny bruger i Oracle

Før vi starter, skal du tjekke, om du har de nødvendige systemrettigheder til at oprette brugere. Hvis ikke, så sørg for at få dem tildelt din konto. Herefter kan du gå videre til de praktiske opgaver. Eksemplerne i denne artikel vedrører oprettelse af bruger Oracle 19c-versionen, men metoderne er de samme for alle Oracle-versioner, der er i brug (inklusive Oracle 10g, 11g, 12c osv.).

Oracle CREATE USER Syntakseksempler

Til at begynde med vil vi undersøge Oracle CREATE USER syntaks. Først vil vi diskutere, hvordan man opretter en med standardindstillinger. Derefter vil vi gå videre til de forskellige varianter af IDENTIFIED klausul, tablespace-klausul og andre ejendommeligheder ved CREATE USER syntaks i Oracle.

Sådan opretter du standardbrugere med standardindstillinger

Det er altid bedst at starte med det grundlæggende. Lad os derfor fokusere på CREATE USER kommando af sig selv. Som den er, vil den oprette en bruger med standardattributter. Yderligere i denne artikel vil vi se på, hvordan man konfigurerer brugere mere fint, og hvordan det øger sikkerheden i databasen generelt.

Opret bruger identificeret ved klausuler

Den IDENTIFIED klausul lader dig angive, hvordan Oracle-databasen godkender en bruger. Lad os se nærmere på forskellige eksempler på IDENTIFIED syntaks i Oracle.

Opret bruger identificeret ved adgangskodeklausul

I det mest ligetil tilfælde opretter vi en ny lokal bruger under brugernavnet. Brugeren skal indtaste adgangskoden for at logge ind på systemet:

CREATE USER <username> IDENTIFIED BY <password>;

Brugernavnet kan være hvad som helst. Adgangskoden skal dog bestå af enkeltbyte-tegn fra databasens tegnsæt. Hvis tegnsættet også har multibyte-tegn, ændrer det ikke adgangskodekravet – brug kun enkeltbyte-tegn.

CREATE USER visitor
  IDENTIFIED BY psw4visits;

Eksternt og globalt klausuler

Udover at identificere med adgangskode, kan du bruge en af ​​de to andre metoder til brugergodkendelse. Det vil være at konfigurere en ekstern bruger eller en global bruger. For at gøre det skal du inkludere koden EXTERNALLY eller GLOBALLY klausul i CREATE USER Oracle kommando.

EXTERNALLY giver mulighed for at oprette en ekstern bruger. I dette tilfælde bliver brugeren godkendt af et eksternt system, såsom operativsystemet. For eksempel er en Oracle-databasebruger en Windows-bruger. Således kan de få adgang til databasen efter at være blevet godkendt af Windows uden at indtaste andre adgangskoder. At arbejde under den eksterne bruger er en standard mulighed for almindelige databasebrugere. Men sådanne brugere har kun standardroller (CONNECT og RESOURCE), uden administrator- eller databaseoperatørrettigheder.

For at oprette en ekstern bruger, udfører vi nedenstående erklæring:

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

På denne måde har vi lavet en ny ekstern bruger til vores database. Navnet er ekstern_bruger1. Der kræves ingen yderligere adgangskode. Vi tildelte denne bruger standard tablespace tbs_new_10 med en kvote på 10 Mb. Andre begrænsninger er defineret af den external_user_profile1, der anvendes på denne bruger.

Som vi nævnte tidligere, kan forskellige eksterne systemer vedligeholde og administrere eksterne brugere i Oracle-databasen. Brug af operativsystemets muligheder er den mest almindelige mulighed. Hvis vi vil oprette en ekstern databasebruger, som systemkontoen i operativsystemet har adgang til, behøver vi kun at ændre vores erklæring en smule. Vi tilføjer ops$-præfikset til brugernavnet:

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

GLOBALLY giver mulighed for at skabe globale brugere. Det betyder, at deres logins og adgangskoder er gemt på Central Oracle Security Server i stedet for den specifikke database. Desuden gælder roller tildelt globale brugere på den centrale server for denne bruger i enhver database. Det vil ikke være nødvendigt at konfigurere brugerrollen i en separat database. Bemærk, at du skal aktivere muligheden for single sign-on for globale brugere.

For at oprette en global databasebruger bruger vi følgende sætning:

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 databasebruger under navnet global_user1 . Vi har tildelt USERS standard tablespace til den bruger med et citat på 10M.

OPRET BRUGER med Tablespace-klausul

Lad os nu gennemgå det grundlæggende Oracle-opret nye brugerscript. Det er nedenfor:

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

Som du kan se, indeholder scriptet flere klausuler, som vi bør tage med i overvejelserne:

Standard Tablespace

Denne klausul specificerer standard tablespace for objekter oprettet af brugeren. Ellers gemmes sådanne objekter i databasens standard tablespace. Hvis der ikke er angivet nogen standard tablespaces for denne særlige database, vil objekterne komme ind i systemets tablespace.

Begrænsning:Angiv ikke det lokalt administrerede midlertidige tablespace (såsom fortryd tablespace eller ordbogsadministreret midlertidigt tablespace) til at være Oracle-brugerens standard tablespace.

Midlertidig tabelplads

Denne klausul specificerer tablespace/tablespace-gruppen, der er beregnet til at indeholde brugerens midlertidige segmenter. Uden det gemmes disse brugeres midlertidige segmenter i det midlertidige standardtablespace i databasen i systemets tablespace. Når du angiver tablespace-gruppen inklusive værdien tablespace_group_name i scriptet, kan brugernes midlertidige segmenter gemmes i ethvert tablespace i denne gruppe.

Bemærk :
Sørg for at angive det midlertidige tablespace med standard blokstørrelse. Det kan ikke være fortryd tablespacet eller tablespacet med automatisk segment-space management.

Kvote

Denne klausul specificerer, hvor meget plads denne bruger kan allokere i tablespacet. Flere QUOTA klausuler i én Oracle CREATE USER kommando kan være til stede, hvis du skal angive flere tablespaces.
Udtrykket kan indeholde UNLIMITED definition for at tillade denne bestemte bruger at allokere tablespacet så meget som nødvendigt uden grænser.

Begrænsning :QUOTA klausulen gælder ikke for midlertidige tablespaces.

Opret brugerattributter

Der er yderligere, valgfri Oracle CREATE USER attributter, du kan inkludere i syntaksen. Tag et kig på følgende eksempel:

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

Lad os gennemgå disse valgfrie klausuler.

Profil

Denne valgfri klausul lader dig begrænse databaseressourcerne for denne specifikke bruger på én gang, når begrænsningerne er defineret i den bestemte profil. Uden denne klausul kommer en ny bruger automatisk under standardprofilen.

Adgangskoden udløber

Klausulen er valgfri, men mange databaseadministratorer indstiller den for mere effektiv sikkerhed. Hvis inkluderet, vil denne klausul bestemme den tvungne ændring af adgangskoden på brugerens side. Normalt sker det, når brugeren forsøger at logge ind i databasen for første gang.

Kontolås/kontolås

Du kan bruge en af ​​disse klausuler. Med LOCK anvendt, opretter Oracle brugerkontoen, men den konto vil ikke have adgang til databasen. Hvis du anvender UNLOCK klausul eller ikke specificer nogen af ​​disse to klausuler, vil kontoen være brugbar på én gang. Den ulåste status er standard.

CREATE USER sætning med disse yderligere parametre ville være som følger:

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	

Her opretter sætningen en ny Oracle-databasebruger ved navn visitor , med adgangskoden migzw23ter . Denne bruger er tildelt standard tablespacet tbs_new_10 med en kvote på 50 Mb. Denne bruger har også tilladelse til at bruge det midlertidige tablespace tbs_temp_10 .

Tildel rolle til bruger

Det første trin er oprettelsen af ​​en bruger. Den næste er at indstille brugerens rettigheder. En nyoprettet bruger må ikke gøre noget, heller ikke at oprette forbindelse til databasen.

At arbejde med Oracle-databaser inkluderer uundgåeligt opgaven med at oprette databasebrugere. Der er de systembrugerkonti, som Oracle selv opretter – hr , OE , sys osv. Disse konti har foruddefinerede konfigurationer med rettigheder og begrænsninger. Det daglige arbejde vil dog altid kræve andre brugere.

En af DBA’s opgaver er at oprette yderligere databasebrugere. Jobbet omfatter konfiguration af brugerkonti, indstilling af privilegier og styring af brugere i henhold til forretningsmålene.

Giv tilladelse i Oracle

Ved at bruge GRANT kommando, kan du give brugerne visse privilegier og konfigurere deres roller efter dine behov. I Oracle kan du give din tilladelse til andre, så de kan manipulere og administrere dataene i din database. GRANT er en meget kraftfuld erklæring med mange mulige muligheder, men kernefunktionaliteten er at administrere privilegier for både brugere og roller i hele databasen.

GRANT kommandosyntaks

Den grundlæggende syntaks for forespørgslen til at give visse privilegier til brugeren er følgende:

GRANT <permission> to <user>;

Oracle-brugerrettigheder

GRANT kommando kan give brugerne privilegier til at oprette, ændre, slippe og administrere databaseobjekter. For eksempel er rettighederne til at oprette tablespaces og til at slette rækkerne i en tabel i en database systemprivilegier.

Oracle har mere end 100 systemrettigheder, der kan findes i tabellen SYSTEM_PRIVILEGE_MAP.

KLUSTER OPRET/OPRET ENHVER/ÆNDR ENHVER/DOP ENHVER KLYNGE
DATABASE ÆNDRE DATABASE, ÆNDRINGSSYSTEM, REVISIONSSYSTEM
INDEKS OPRET ENHVER/ÆNDRING ENHVER/DROP ENHVER INDEKS
PROFIL OPRET/ÆNDRE/SLIP PROFIL
ROLE OPRET/ÆNDRE ENHVER/SLIP ENHVER /GIV ENHVER (tillader TILBAGE)
Rullback-segment OPRET/ÆNDRE/SLIP TILBAGE-SEGMENT
BRUGER OPRET/ÆNDRE/BLIV/SLIP BRUGER
VIS OPRET/OPRET ENHVER/SLIP ENHVER VISNING
SYNONYM OPRET/OPRET ENHVER/OPRET OFFENTLIG/DROP ENHVER/DROP OFFENTLIG SYNONYM
SESSION OPRET/ÆNDRE/BEGRÆNSET SESSION, ÆNDRE RESOURCEOMKOSTNINGER
TABEL OPRET/OPRET ENHVER/ÆNDR ENHVER/SLIP ENHVER/VÆLG ENHVER/INDSÆT ENHVER/OPDATER ENHVER/SLET ENHVER/LÅS ENHVER TABEL
TABELPLADS OPRET/ÆNDRE/SLIP/ADMINISTRER TABELPLADS

Normalt giver administratoren af ​​en database rettighederne til brugerne. Der er dog tilfælde, hvor administratoren skal overføre deres Oracle-brugerrettigheder. Det er her, DBA-rettighederne kommer ind. Hvis en DBA skal give systemprivilegier til en anden person, skal det gøres med admin-indstillingen:

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

Udover Oracle-systemrettighederne tildeles objektprivilegier til databaseobjekter:tabeller, visninger, procedurer og så videre.

Sådan opretter og giver du alle rettigheder til Oracle-bruger

Først skal vi give vores brugere systemprivilegiet til at logge på databasen. Vi bruger følgende erklæring til det:

GRANT CREATE SESSION to visitor;

Der er mange tilladelser, som databaseadministratoren kan give brugeren. Men det er vigtigt at holde fast i det primære sikkerhedskoncept, som er at give brugerne det minimum af privilegier, der er nødvendige for at udføre arbejdet effektivt. Derfor anbefales det ikke at give alle privilegier til brugeren.

Du kan anvende andre privilegier én efter én, hver med en separat erklæring. Eller det er muligt at kombinere disse tilladelser til én, som vist nedenfor:

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

Hvis denne bestemte bruger har tilladelse til at ændre tabeller, procedurer, triggere osv., er syntaksen for at indstille det nødvendige privilegium for hvert tilfælde nedenfor. Igen, vær meget forsigtig, når du tillader brugeren at ændre elementer, da denne tilladelse er global.

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

For at tillade brugeren at slette elementer, bruger vi nedenstående udsagn:

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

Sådan giver man bordprivilegier til brugere i Oracle

Før du indstiller privilegierne til den pågældende bruger, bør du overveje, hvilke opgaver denne person skal udføre i databasen. De mest almindelige scenarier omfatter oprettelse af tabeller, visninger, procedurer, udløsere. Nogle tilfælde kræver muligheden for at ændre eller slette disse elementer. Afhængigt af situationen definerer administratoren, hvilke systemrettigheder der skal gives.

Lad os se nærmere på, hvordan man giver CREATE TABLE privilegium til en bruger i Oracle. Hvis vi er villige til at tillade vores bruger – gæst – for at oprette tabeller i databasen, vil vi bruge følgende forespørgsel:

GRANT CREATE TABLE to visitor;

Opret Oracle-brugere og giv nemt tilladelser med dbForge Studio til Oracle

Hvis du arbejder med Oracle-databaser på daglig basis og leder efter en praktisk alt-i-en kraftfuld IDE, slutter din søgning her. dbForge Studio for Oracle hjælper udviklere med at fremskynde PL/SQL-kodning, leverer alsidige dataredigeringsværktøjer til håndtering af in-database og eksterne data.

I denne artikel vil vi oprette en Oracle-bruger og tildele DBA-privilegier ved hjælp af dette multi-purpose script:

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 laver i det medfølgende script, er:

  • oprettelse af en ny bruger
  • tildeling af DBA-rettigheder til den nyoprettede bruger
  • indstille den nyoprettede bruger som standard for den aktuelle session

I Oracle er brugere og skemaer stort set det samme. Du kan overveje, at en bruger er en konto for at oprette forbindelse til en database, og et skema er det sæt af objekter, der hører til den pågældende konto. Det nyoprettede skema er tomt og vil derfor ikke blive vist i Database Explorer .

Lad os oprette en afdeling tabel for at få den nye bruger til at blive vist på listen. For at gøre det, er du velkommen til at bruge følgende script:

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

Husk, at du ikke behøver at åbne et andet SQL-dokument for denne handling. dbForge Studio for Oracle giver dig mulighed for kun at udføre koden delvist. Du skal blot vælge CREATE TABLE klausul, lav et højreklik og vælg Udfør markering .

Hvis du har AutoComit funktion TIL, vil det forrige trin være det sidste. Men hvis den er slået fra, skal du foretage ændringerne. Når du derefter opdaterer Database Explorer, vil du se brugernavn1 på listen.

Der er tilfælde, hvor gamle sessioner forbliver kørende på serveren. De kan forstyrre udførelsen af ​​nye kommandoer. I koden ovenfor bliver alle de gamle sessioner automatisk lokaliseret og fjernet fra serveren. Hvis du har brug for at genstarte din nuværende session, kan du afbryde forbindelsen eller afbryde den ved at bruge en af ​​disse forespørgsler:

  • ALTER SYSTEM DISCONNECT SESSION
  • ALTER SYSTEM KILL SESSION

Sådan sletter du (slip) bruger i Oracle

Hvis du af en eller anden grund har brug for at fjerne en bruger, skal du bruge DROP USER kommando med følgende syntaks:

DROP USER <username>;

I vores testtilfælde fjerner vi brugeren besøgende oprettet tidligere:

DROP USER visitor;

Der er dog flere begrænsninger, som du skal være opmærksom på, før du dropper brugeren:

  • Du kan ikke fjerne brugere uden at slette alle de relaterede objekter. Du skal derfor slette alle tabeller, visninger, procedurer osv., som denne bruger har oprettet, før du fortsætter til DROP-kommandoen.
  • Du kan ikke fjerne brugere, der er forbundet til databasen. Først skal du rydde op i alle sessioner, som brugeren havde. Derefter kan du droppe selve brugeren.

Der er en speciel kommando, der gør det muligt at droppe brugeren med alle dens databaseobjekter i ét skud:

DROP USER <username> CASCADE;

Konklusion

Sammenfattende kan du nu bruge Oracle SQL CREATE USER kommando for at tilføje nye brugere, konfigurere og administrere dem. Vi brugte eksemplerne til manuel ydelse. Mulighederne i de moderne softwareløsninger til Oracle-databaser kan dog forenkle dette job, gøre det hurtigere og mere præcist. Du er velkommen til at prøve dbForge Studio med en .

Nyttige links

  • Opsætning af en ny brugerkonto i Oracle
  • Oracle-databaseadministrationsværktøjer
  • Opret en database i Oracle
  • Oracle Omdøb tabel
  • Oracle Alter-tabel


  1. Hvordan undslipper jeg % fra python mysql-forespørgsel

  2. Tilslutning af SQuirreL SQL til Microsoft Excel

  3. Bedste databasefelttype for en URL

  4. The Performance Tuning Maze