sql >> Database >  >> RDS >> Oracle

Een nieuwe Oracle-gebruiker maken en bevoegdheden verlenen:syntaxis en voorbeelden

In dit artikel zullen we het hebben over het aanmaken van een gebruiker in Oracle. Je leert hoe je nieuwe databasegebruikers kunt toevoegen, welke aanvullende aspecten deze taak met zich meebrengt:van de eerste aanmaak van een gebruiker tot het verwijderen ervan. Bovendien vindt u enkele handige tips over het werken met IDENTIFY en TABLESPACE clausules, en leer hoe u GRANT rollen en machtigingen in Oracle.

Inhoud

  • Een nieuwe gebruiker maken in Oracle
  • Oracle CREATE USER-syntaxisvoorbeelden
  • Standaardgebruikers maken met standaardinstellingen
  • Gebruiker maken die wordt geïdentificeerd door clausules
    • Gebruiker maken die wordt geïdentificeerd door wachtwoordclausule
    • Externe en wereldwijde clausules
  • GEBRUIKER MAKEN met tabelruimteclausule
    • Standaard tabelruimte
    • Tijdelijke tabelruimte
    • Quota
  • Gebruikerskenmerken maken
    • Profiel
    • Wachtwoord verlopen
    • Account vergrendelen/account ontgrendelen
  • Rol toekennen aan gebruiker
  • Toestemming verlenen in Oracle
  • syntaxis GRANT-opdracht
  • Oracle-gebruikersrechten
  • Hoe u alle rechten aan een Oracle-gebruiker kunt maken en verlenen
  • Hoe u tafelprivileges toekent aan een gebruiker in Oracle
  • Maak eenvoudig Oracle-gebruikers en verleen machtigingen met dbForge Studio for Oracle
  • Hoe te verwijderen (Drop) gebruiker in Oracle
  • Conclusie

Een nieuwe gebruiker maken in Oracle

Voordat we beginnen, moet u controleren of u over de nodige systeemrechten beschikt om gebruikers aan te maken. Als dat niet het geval is, zorg er dan voor dat ze aan uw account worden toegewezen. Daarna kun je doorgaan met de praktische taken. De voorbeelden in dit artikel hebben betrekking op de versie van Oracle 19c voor het maken van gebruikers, maar de methoden zijn hetzelfde voor alle Oracle-versies die in gebruik zijn (inclusief Oracle 10g, 11g, 12c, enz.).

Oracle CREATE USER-syntaxisvoorbeelden

Om te beginnen zullen we kijken naar Oracle CREATE USER syntaxis. Eerst zullen we bespreken hoe u er een kunt maken met standaardinstellingen. Daarna gaan we verder met de verschillende varianten van de IDENTIFIED clausule, tabelruimteclausule en andere eigenaardigheden van de CREATE USER syntaxis in Oracle.

Standaardgebruikers maken met standaardinstellingen

Het is altijd het beste om bij de basis te beginnen. Laten we ons daarom concentreren op de CREATE USER zelf opdracht geven. Zoals het is, zal het een gebruiker maken met standaardattributen. Verderop in dit artikel zullen we bekijken hoe we gebruikers fijner kunnen configureren en hoe dit de veiligheid van de database in het algemeen verhoogt.

Maak een gebruiker geïdentificeerd door clausules

De IDENTIFIED clausule kunt u aangeven hoe de Oracle-database een gebruiker authenticeert. Laten we eens kijken naar verschillende voorbeelden van de IDENTIFIED syntaxis in Oracle.

Gebruiker maken geïdentificeerd door wachtwoordclausule

In het meest eenvoudige geval maken we een nieuwe lokale gebruiker aan onder de gebruikersnaam. De gebruiker moet het wachtwoord invoeren om in te loggen op het systeem:

CREATE USER <username> IDENTIFIED BY <password>;

De gebruikersnaam kan van alles zijn. Het wachtwoord moet echter bestaan ​​uit enkelbyte-tekens uit de databasetekenset. Als de tekenset ook multibyte-tekens heeft, verandert dit niets aan de wachtwoordvereiste - gebruik alleen single-byte-tekens.

CREATE USER visitor
  IDENTIFIED BY psw4visits;

Externe en wereldwijde clausules

Naast identificatie met een wachtwoord, kunt u een van de twee andere manieren van gebruikersauthenticatie gebruiken. Het zal een externe gebruiker of een globale gebruiker configureren. Om dit te doen, moet u de EXTERNALLY . opnemen of GLOBALLY clausule in de CREATE USER Orakel commando.

EXTERNALLY maakt het mogelijk om een ​​externe gebruiker aan te maken. In dit geval wordt de gebruiker geverifieerd door een extern systeem, zoals het besturingssysteem. Een Oracle-databasegebruiker is bijvoorbeeld een Windows-gebruiker. Zo hebben ze toegang tot de database nadat ze door Windows zijn geverifieerd zonder andere wachtwoorden in te voeren. Werken onder de externe gebruiker is een standaard optie voor reguliere database gebruikers. Maar dergelijke gebruikers hebben alleen standaardrollen (CONNECT en RESOURCE), zonder beheerders- of database-operatorrechten.

Om een ​​externe gebruiker aan te maken, voeren we de onderstaande instructie uit:

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

Op deze manier hebben we een nieuwe externe gebruiker voor onze database gemaakt. De naam is external_user1. Er is geen extra wachtwoord nodig. We hebben deze gebruiker de standaard tablespace tbs_new_10 toegewezen met een quotum van 10 Mb. Andere beperkingen worden gedefinieerd door de external_user_profile1 die op deze gebruiker wordt toegepast.

Zoals we eerder vermeldden, kunnen verschillende externe systemen externe gebruikers in de Oracle-database onderhouden en beheren. Het gebruik van de mogelijkheden van het besturingssysteem is de meest gebruikelijke optie. Als we dus een externe databasegebruiker willen maken die toegankelijk is voor het systeemaccount in het besturingssysteem, hoeven we onze verklaring slechts een beetje aan te passen. We voegen het voorvoegsel ops$ toe aan de gebruikersnaam:

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

GLOBALLY maakt het mogelijk om wereldwijde gebruikers te creëren. Dit betekent dat hun logins en wachtwoorden worden opgeslagen op de Central Oracle Security Server in plaats van in de specifieke database. Bovendien zijn rollen die zijn toegewezen aan globale gebruikers op die centrale server van toepassing op deze gebruiker in elke database. Het is niet nodig om de gebruikersrol in een aparte database te configureren. Houd er rekening mee dat u de optie voor eenmalige aanmelding voor wereldwijde gebruikers moet inschakelen.

Om een ​​globale databasegebruiker aan te maken, gebruiken we de volgende verklaring:

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

Nu hebben we een nieuwe globale databasegebruiker onder de naam global_user1 . We hebben USERS . toegewezen standaard tablespace voor die gebruiker met een quote van 10M.

GEBRUIKER MAKEN met Tablespace-clausule

Laten we nu eens kijken naar het basisscript van Oracle om een ​​nieuw gebruikersscript te maken. Het staat hieronder:

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

Zoals je ziet, bevat het script verschillende clausules waarmee we rekening moeten houden:

Standaard tabelruimte

Deze clausule specificeert de standaard tablespace voor objecten die door de gebruiker zijn gemaakt. Anders worden dergelijke objecten opgeslagen in de standaardtabelruimte van de database. Als er geen standaardtabelruimten zijn opgegeven voor deze specifieke database, komen de objecten in de systeemtabelruimte.

Beperking:geef niet op dat de lokaal beheerde tijdelijke tabelruimte (zoals de ongedaan maken van de tabelruimte of de door een woordenboek beheerde tijdelijke tabelruimte) de standaardtabelruimte van de Oracle Create User is.

Tijdelijke tabelruimte

Deze clausule specificeert de tablespace/tablespace-groep die bedoeld is om de tijdelijke segmenten van de gebruiker te bevatten. Zonder dit worden de tijdelijke segmenten van die gebruikers opgeslagen in de standaard tijdelijke tabelruimte van de database van de systeemtabelruimte. Wanneer u de tablespace-groep specificeert inclusief de tablespace_group_name-waarde in het script, kunnen tijdelijke segmenten van gebruikers worden opgeslagen in elke tablespace van die groep.

Opmerking :
Zorg ervoor dat u de tijdelijke tabelruimte specificeert met standaard blokgrootte. Het kan niet de undo tablespace of de tablespace met automatisch beheer van de segmentruimte zijn.

Quota

Deze clausule specificeert hoeveel ruimte deze gebruiker kan toewijzen in de tablespace. Meerdere QUOTA clausules in één Oracle CREATE USER commando kan aanwezig zijn als u meerdere tablespaces moet specificeren.
De clausule kan de UNLIMITED . bevatten definitie om deze bepaalde gebruiker in staat te stellen de tablespace zoveel als nodig toe te wijzen, zonder grenzen.

Beperking :de QUOTA clausule is niet van toepassing op tijdelijke tablespaces.

Gebruikersattributen maken

Er zijn aanvullende, optionele Oracle CREATE USER attributen die u in de syntaxis kunt opnemen. Bekijk het volgende voorbeeld:

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

Laten we deze optionele clausules eens bekijken.

Profiel

Met deze optionele clausule kunt u de databasebronnen voor deze specifieke gebruiker in één keer beperken wanneer de beperkingen in het specifieke profiel zijn gedefinieerd. Zonder deze clausule komt een nieuwe gebruiker automatisch onder het standaardprofiel.

Wachtwoord verloopt

De clausule is optioneel, maar veel databasebeheerders stellen deze in voor een effectievere beveiliging. Indien opgenomen, bepaalt deze clausule de gedwongen wijziging van het wachtwoord aan de kant van de gebruiker. Meestal gebeurt dit wanneer de gebruiker voor de eerste keer probeert in te loggen op de database.

Accountvergrendeling/Account ontgrendelen

U kunt een van deze clausules gebruiken. Met LOCK toegepast, maakt Oracle het gebruikersaccount aan, maar dat account heeft geen toegang tot de database. Als u de UNLOCK . toepast clausule of geen van deze twee clausules specificeert, zal het account in één keer bruikbaar zijn. De ontgrendelde status is de standaard.

De CREATE USER statement met deze aanvullende parameters zou als volgt zijn:

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	

Hier creëert de instructie een nieuwe Oracle-databasegebruiker met de naam bezoeker , met het wachtwoord migzw23ter . Deze gebruiker krijgt de standaard tablespace tbs_new_10 . toegewezen met een quotum van 50Mb. Deze gebruiker mag ook de tijdelijke tabelruimte tbs_temp_10 . gebruiken .

Rol toekennen aan gebruiker

De eerste stap is het aanmaken van een gebruiker. De volgende is om de gebruikersrechten in te stellen. Een nieuw aangemaakte gebruiker mag niets doen, zelfs geen verbinding maken met de database.

Werken met Oracle-databases omvat onvermijdelijk de taak om databasegebruikers te maken. Er zijn de systeemgebruikersaccounts die Oracle zelf aanmaakt - hr , OE , sys , enz. Deze accounts hebben vooraf gedefinieerde configuraties met rechten en beperkingen. Voor het dagelijkse werk zijn echter altijd andere gebruikers nodig.

Een van de taken van de DBA is het creëren van extra databasegebruikers. De taak omvat het configureren van de gebruikersaccounts, het instellen van privileges en het beheren van gebruikers volgens de zakelijke doelen.

Toestemming verlenen in Oracle

Door gebruik te maken van de GRANT commando, kunt u de gebruikers bepaalde privileges geven en hun rollen configureren volgens uw behoeften. In Oracle kunt u uw toestemming aan anderen verlenen zodat zij de gegevens in uw database kunnen manipuleren en beheren. GRANT is een zeer krachtig statement met veel mogelijke opties, maar de kernfunctionaliteit is het beheren van de privileges van zowel gebruikers als rollen in de database.

GRANT-opdrachtsyntaxis

De basissyntaxis van de query om bepaalde rechten aan de gebruiker te verlenen is de volgende:

GRANT <permission> to <user>;

Oracle-gebruikersrechten

De GRANT commando kan de gebruikers privileges geven om database-objecten te maken, wijzigen, neerzetten en beheren. De rechten om bijvoorbeeld tabelruimten te maken en de rijen van een tabel in een database te verwijderen, zijn systeemrechten.

Oracle heeft meer dan 100 systeemrechten die u kunt vinden in de tabel SYSTEM_PRIVILEGE_MAP.

CLUSTER CREER/MAAK ELKE CLUSTER/WIJZIG ELKE CLUSTER
DATABASE WIJZIG DATABASE, WIJZIG SYSTEEM, AUDITSYSTEEM
INDEX CREER ELKE/WIJZIG ELKE INDEX/DROP ELKE INDEX
PROFIEL CREER/WIJZIG/LAAG PROFIEL
ROL CREER/WIJZIG ELKE/DROP ELKE/VERLENEN (staat intrekken toe)
Segment terugdraaien CREER/WIJZIG/DROP ROLLBACK-SEGMENT
GEBRUIKER CREER/WIJZIG/WORD/DROP GEBRUIKER
VIEW CREER/MAAK ELKE WEERGAVE/DROP ELKE WEERGAVE
SYNONIEM CREATE/CREATE ELK/CREATE PUBLIC/DROP ELKE/DROP PUBLIC SYNONIEM
SESSIE CREER/WIJZIG/BEPERKTE SESSIE, WIJZIG MIDDELEN KOSTEN
TABEL CREATE/CREATE ELKE/WIJZIG ELKE/DROP ELKE/SELECTEER ELKE/VOEG ELKE IN/UPDATE ELKE/VERWIJDER ELKE/VERGRENDEL ELKE TABEL
TABELRUIMTE CREER/WIJZIG/DROP/BEHEER TAFELRUIMTE

Gewoonlijk verleent de beheerder van een database de privileges aan de gebruikers. Er zijn echter gevallen waarin de beheerder zijn Oracle-gebruikersrechten moet overdragen. Dit is wanneer DBA-rechten binnenkomen. Als een DBA systeemrechten aan een andere persoon moet verlenen, moet dit worden gedaan met de beheerdersoptie:

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

Naast de Oracle-systeemprivileges worden objectprivileges toegekend aan database-objecten:tabellen, views, procedures, enzovoort.

Hoe u alle rechten aan Oracle-gebruiker maakt en toekent

Eerst moeten we onze gebruikers het systeemrecht geven om in te loggen op de database. We gebruiken daarvoor de volgende verklaring:

GRANT CREATE SESSION to visitor;

Er zijn veel machtigingen die de databasebeheerder aan de gebruiker kan geven. Maar het is essentieel om vast te houden aan het primaire concept van beveiliging, namelijk gebruikers het minimum aan privileges geven dat nodig is om het werk efficiënt te doen. Daarom wordt het niet aanbevolen om alle privileges aan de gebruiker te geven.

U kunt andere privileges één voor één toepassen, elk door een afzonderlijke verklaring. Of het is mogelijk om deze machtigingen te combineren tot één, zoals hieronder weergegeven:

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

Als deze definitieve gebruiker tabellen, procedures, triggers, enz. mag wijzigen, vindt u hieronder de syntaxis om de benodigde bevoegdheden voor elk geval in te stellen. Nogmaals, wees heel voorzichtig wanneer u de gebruiker toestaat om elementen te wijzigen, aangezien deze toestemming globaal is.

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

Om de gebruiker in staat te stellen elementen te verwijderen, gebruiken we de onderstaande verklaringen:

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

Tabelrechten toekennen aan gebruiker in Oracle

Voordat u de privileges voor de specifieke gebruiker instelt, moet u overwegen welke taken die persoon in de database moet uitvoeren. De meest voorkomende scenario's zijn het maken van tabellen, weergaven, procedures en triggers. Sommige gevallen vereisen de mogelijkheid om die elementen te wijzigen of te verwijderen. Afhankelijk van de situatie bepaalt de beheerder welke systeemrechten hij moet verlenen.

Laten we eens nader bekijken hoe u CREATE TABLE . kunt verlenen privilege aan een gebruiker in Oracle. Als we bereid zijn om onze gebruiker – bezoeker – om tabellen in de database aan te maken, gebruiken we de volgende query:

GRANT CREATE TABLE to visitor;

Maak eenvoudig Oracle-gebruikers en verleen machtigingen met dbForge Studio for Oracle

Als u dagelijks met Oracle-databases werkt en op zoek bent naar een handige alles-in-één krachtige IDE, dan eindigt uw zoektocht hier. dbForge Studio voor Oracle helpt ontwikkelaars om PL/SQL-codering te versnellen en biedt veelzijdige tools voor het bewerken van gegevens voor het beheren van in-database en externe gegevens.

In dit artikel zullen we een Oracle-gebruiker maken en DBA-rechten verlenen met behulp van dit multifunctionele 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;
/ 

Wat we doen in het meegeleverde script, is:

  • een nieuwe gebruiker maken
  • DBA-rechten toekennen aan de nieuw aangemaakte gebruiker
  • de nieuw aangemaakte gebruiker instellen als standaard voor de huidige sessie

In Oracle zijn gebruikers en schema's in wezen hetzelfde. U kunt ervan uitgaan dat een gebruiker een account is om verbinding te maken met een database, en een schema is de verzameling objecten die bij dat account horen. Het nieuw gemaakte schema is leeg en wordt daarom niet weergegeven in Database Explorer .

Laten we een afdelingen . maken tabel om de nieuwe gebruiker in de lijst te laten verschijnen. Gebruik hiervoor het volgende script:

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

Houd er rekening mee dat u voor deze bewerking geen ander SQL-document hoeft te openen. Met dbForge Studio voor Oracle kunt u de code slechts gedeeltelijk uitvoeren. Selecteer gewoon de CREATE TABLE clausule, klik met de rechtermuisknop en kies Selectie uitvoeren .

Als u de AutoComit . hebt functie AAN, is de vorige stap de laatste. Als het echter is uitgeschakeld, moet u de wijzigingen doorvoeren. Vervolgens, bij het vernieuwen van Database Explorer, ziet u gebruikersnaam1 in de lijst.

Er zijn gevallen waarin oude sessies actief blijven op de server. Ze kunnen de uitvoering van nieuwe opdrachten verstoren. In de bovenstaande code worden alle oude sessies automatisch gelokaliseerd en verwijderd van de server. Als u uw huidige sessie opnieuw moet starten, kunt u deze verbreken of beëindigen met een van deze vragen:

  • ALTER SYSTEM DISCONNECT SESSION
  • ALTER SYSTEM KILL SESSION

Hoe verwijder (Drop) gebruiker in Oracle

Als je een gebruiker om welke reden dan ook moet verwijderen, gebruik dan de DROP USER commando met de volgende syntaxis:

DROP USER <username>;

In onze testcase verwijderen we de gebruiker bezoeker eerder gemaakt:

DROP USER visitor;

Er zijn echter verschillende beperkingen waar u op moet letten voordat u de gebruiker laat vallen:

  • U kunt geen gebruikers verwijderen zonder alle gerelateerde objecten te verwijderen. U moet dus alle tabellen, weergaven, procedures, enz. die deze gebruiker heeft gemaakt, verwijderen voordat u verdergaat met het DROP-commando.
  • U kunt geen gebruikers verwijderen die zijn verbonden met de database. Eerst moet u alle sessies wissen die de gebruiker had. Daarna kunt u de gebruiker zelf laten vallen.

Er is een speciaal commando waarmee je de gebruiker met al zijn database-objecten in één keer kunt laten vallen:

DROP USER <username> CASCADE;

Conclusie

Samenvattend, nu kunt u de Oracle SQL CREATE USER . gebruiken commando om nieuwe gebruikers toe te voegen, te configureren en te beheren. We hebben de voorbeelden gebruikt voor handmatige uitvoering. De mogelijkheden van de moderne softwareoplossingen voor Oracle-databases kunnen deze taak echter vereenvoudigen, sneller en nauwkeuriger maken. Voel je vrij om dbForge Studio eens te proberen met een .

Nuttige links

  • Een nieuwe gebruikersaccount instellen in Oracle
  • Oracle Database Administration Tools
  • Een database maken in Oracle
  • Oracle hernoemen tabel
  • Oracle Alter Table


  1. ERROR 1148:Het gebruikte commando is niet toegestaan ​​met deze MySQL-versie

  2. PostgreSQL - Naam database wijzigen

  3. Geen geschikte driver gevonden bij het opnemen van de benodigde drivers met maven-assembly-plugin

  4. Leer databaseontwerp met SQL Server Management Studio (SSMS) - deel 2