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