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

Creare un nuovo utente Oracle e concedere privilegi:sintassi ed esempi

In questo articolo parleremo di come creare un utente in Oracle. Imparerai come aggiungere nuovi utenti al database, capire quali aspetti supplementari comporta questo lavoro:dalla creazione dell'utente iniziale alla sua eliminazione. Inoltre, troverai alcuni suggerimenti utili su come lavorare con IDENTIFY e TABLESPACE clausole, così come imparare a GRANT ruoli e autorizzazioni in Oracle.

Contenuti

  • Come creare un nuovo utente in Oracle
  • Esempi di sintassi di Oracle CREATE USER
  • Come creare utenti predefiniti con impostazioni predefinite
  • Crea utente identificato da clausole
    • Crea utente identificato da clausola password
    • Clausole esterne e globali
  • CREA UTENTE con clausola tablespace
    • Spazio tabella predefinito
    • Spazio tabella temporaneo
    • Quota
  • Crea attributi utente
    • Profilo
    • Password in scadenza
    • Blocco/Sblocco account
  • Concedi ruolo all'utente
  • Concessione dell'autorizzazione in Oracle
  • Sintassi del comando GRANT
  • Privilegi utente Oracle
  • Come creare e concedere tutti i privilegi all'utente Oracle
  • Come concedere il privilegio tabella all'utente in Oracle
  • Crea utenti Oracle e concedi autorizzazioni facilmente con dbForge Studio per Oracle
  • Come eliminare (eliminare) un utente in Oracle
  • Conclusione

Come creare un nuovo utente in Oracle

Prima di iniziare, è necessario verificare se si dispone dei privilegi di sistema necessari per creare utenti. In caso contrario, assicurati di assegnarli al tuo account. Successivamente, puoi procedere alle attività pratiche. Gli esempi in questo articolo si riferiscono alla versione create user Oracle 19c, ma i metodi sono gli stessi per tutte le versioni Oracle in uso (incluso Oracle 10g, 11g, 12c, ecc.).

Esempi di sintassi di Oracle CREATE USER

Per cominciare, esamineremo Oracle CREATE USER sintassi. Innanzitutto, discuteremo come crearne uno con le impostazioni predefinite. Successivamente, si passerà alle diverse varianti del IDENTIFIED clausola, clausola tablespace e altre peculiarità di CREATE USER sintassi in Oracle.

Come creare utenti predefiniti con impostazioni predefinite

È sempre meglio iniziare con le basi. Quindi, concentriamoci su CREATE USER comando da solo. Così com'è, creerà un utente con attributi predefiniti. Più avanti in questo articolo, vedremo come configurare gli utenti in modo più preciso e come aumenta la sicurezza del database in generale.

Crea utente identificato da clausole

Il IDENTIFIED La clausola consente di indicare come il database Oracle autentica un utente. Diamo un'occhiata più da vicino a diversi esempi di IDENTIFIED sintassi in Oracle.

Crea utente identificato da clausola password

Nel caso più semplice, stiamo creando un nuovo utente locale sotto il nome utente. All'utente verrà richiesto di inserire la password per accedere al sistema:

CREATE USER <username> IDENTIFIED BY <password>;

Il nome utente può essere qualsiasi cosa. Tuttavia, la password deve essere composta da caratteri a byte singolo dal set di caratteri del database. Se il set di caratteri ha anche caratteri multibyte, non cambia il requisito della password:usa solo caratteri a byte singolo.

CREATE USER visitor
  IDENTIFIED BY psw4visits;

Clausole esterne e globali

Oltre all'identificazione tramite password, puoi utilizzare uno degli altri due metodi di autenticazione dell'utente. Configura un utente esterno o un utente globale. Per farlo, devi includere il EXTERNALLY o GLOBALLY clausola nel CREATE USER Comando Oracle.

EXTERNALLY consente di creare un utente esterno. In questo caso, l'utente viene autenticato da un sistema esterno, come il sistema operativo. Ad esempio, un utente del database Oracle è un utente Windows. Pertanto, possono accedere al database dopo essere stati autenticati da Windows senza inserire altre password. Lavorare sotto l'utente esterno è un'opzione standard per gli utenti regolari del database. Ma tali utenti hanno solo ruoli standard (CONNECT e RESOURCE), senza privilegi di amministratore o operatore di database.

Per creare un utente esterno, eseguiamo la seguente istruzione:

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

In questo modo abbiamo creato un nuovo utente esterno per il nostro database. Il nome è utente_esterno1. Non è necessaria alcuna password aggiuntiva. Abbiamo assegnato a questo utente il tablespace predefinito tbs_new_10 con una quota di 10 Mb. Altre limitazioni sono definite da external_user_profile1 applicato a questo utente.

Come accennato in precedenza, diversi sistemi esterni possono mantenere e gestire utenti esterni nel database Oracle. L'utilizzo delle funzionalità del sistema operativo è l'opzione più comune. Pertanto, se vogliamo creare un utente di database esterno accessibile dall'account di sistema nel sistema operativo, dobbiamo solo modificare leggermente la nostra dichiarazione. Aggiungeremo il prefisso ops$ al nome utente:

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

GLOBALLY consente di creare utenti globali. Significa che i loro accessi e password sono archiviati su Central Oracle Security Server invece che sul database specifico. Inoltre, i ruoli assegnati agli utenti globali su quel Server centrale si applicano a questo utente in qualsiasi database. Non sarà necessario configurare il ruolo utente in un database separato. Tieni presente che devi abilitare l'opzione Single Sign-On per gli utenti globali.

Per creare un utente di database globale, utilizziamo la seguente istruzione:

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

Ora abbiamo un nuovo utente del database globale con il nome di utente_globale1 . Abbiamo assegnato UTENTI tablespace predefinita per quell'utente con una quotazione di 10 milioni.

CREA UTENTE con la clausola tablespace

Ora, esaminiamo lo script Oracle di base per la creazione di un nuovo utente. È sotto:

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

Come vedi, lo script include diverse clausole che dovremmo prendere in considerazione:

Spazio tabella predefinito

Questa clausola specifica lo spazio tabella predefinito per gli oggetti creati dall'utente. In caso contrario, tali oggetti vengono archiviati nel tablespace predefinito del database. Se non sono specificati tablespace predefiniti per questo particolare database, gli oggetti entreranno nel tablespace di sistema.

Limitazione:non specificare il tablespace temporaneo gestito localmente (come il tablespace di annullamento o il tablespace temporaneo gestito da dizionario) come tablespace predefinito dell'utente di creazione di Oracle.

Spazio tabella temporaneo

Questa clausola specifica il gruppo tablespace/tablespace destinato a contenere i segmenti temporanei dell'utente. Senza di essa, i segmenti temporanei di tali utenti vengono archiviati nel tablespace temporaneo predefinito del database del tablespace di sistema. Quando specifichi il gruppo tablespace che include il valore tablespace_group_name nello script, i segmenti temporanei degli utenti possono essere salvati in qualsiasi tablespace di quel gruppo.

Nota :
Assicurati di specificare il tablespace temporaneo con la dimensione del blocco standard. Non può essere il tablespace annulla o il tablespace con gestione automatica dello spazio dei segmenti.

Quota

Questa clausola specifica la quantità di spazio che questo utente può allocare nel tablespace. QUOTA multiple clausole in un Oracle CREATE USER il comando può essere presente se è necessario specificare più tablespace.
La clausola può includere il UNLIMITED definizione per consentire a questo utente definito di allocare il tablespace quanto necessario, senza limiti.

Restrizione :il QUOTA La clausola non si applica ai tablespace temporanei.

Crea attributi utente

Sono disponibili CREATE USER Oracle aggiuntivi e opzionali attributi che puoi includere nella sintassi. Dai un'occhiata al seguente esempio:

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

Esaminiamo queste clausole facoltative.

Profilo

Questa clausola facoltativa consente di limitare le risorse del database per questo utente specifico in una sola volta quando le limitazioni sono definite nel profilo particolare. Senza questa clausola, un nuovo utente rientra automaticamente nel profilo predefinito.

Password in scadenza

La clausola è facoltativa, ma molti amministratori di database la impostano per una sicurezza più efficace. Se inclusa, questa clausola determinerà la modifica forzata della password da parte dell'utente. Di solito accade quando l'utente tenta di accedere al database per la prima volta.

Blocco account/Sblocco account

Puoi utilizzare una di queste clausole. Con LOCK applicato, Oracle crea l'account utente, ma quell'account non avrà accesso al database. Se applichi il UNLOCK clausola o se non specifichi nessuna di queste due clausole, l'account sarà utilizzabile immediatamente. Lo stato sbloccato è quello predefinito.

Il CREATE USER istruzione con questi parametri aggiuntivi sarebbe la seguente:

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	

Qui, l'istruzione crea un nuovo utente del database Oracle denominato visitor , con la password migzw23ter . A questo utente viene assegnato lo spazio tabella predefinito tbs_new_10 con una quota di 50Mb. Questo utente può anche utilizzare il tablespace temporaneo tbs_temp_10 .

Concedi ruolo all'utente

Il primo passo è la creazione di un utente. Il prossimo è impostare i diritti dell'utente. Un utente appena creato non può fare nulla, nemmeno connettersi al database.

Lavorare con i database Oracle include inevitabilmente il compito di creare utenti di database. Ci sono gli account utente di sistema creati da Oracle stesso:hr , OE , sistema , ecc. Questi account hanno configurazioni predefinite con diritti e limitazioni. Tuttavia, il lavoro quotidiano richiederà sempre altri utenti.

Uno dei compiti del DBA è creare utenti di database aggiuntivi. Il lavoro include la configurazione degli account utente, l'impostazione dei privilegi e la gestione degli utenti in base agli obiettivi aziendali.

Concessione dell'autorizzazione in Oracle

Utilizzando il GRANT comando, puoi fornire agli utenti determinati privilegi e configurare i loro ruoli in base alle tue esigenze. In Oracle, puoi concedere la tua autorizzazione ad altri in modo che possano manipolare e gestire i dati nel tuo database. GRANT è un'istruzione molto potente con molte opzioni possibili, ma la funzionalità principale è gestire i privilegi di utenti e ruoli in tutto il database.

Sintassi del comando GRANT

La sintassi di base della query per concedere determinati privilegi all'utente è la seguente:

GRANT <permission> to <user>;

Privilegi utente Oracle

La GRANT comando può dare agli utenti i privilegi per creare, modificare, eliminare e gestire gli oggetti del database. Ad esempio, i privilegi per creare tablespace e per eliminare le righe di qualsiasi tabella in un database sono privilegi di sistema.

Oracle ha più di 100 privilegi di sistema che possono essere trovati nella tabella SYSTEM_PRIVILEGE_MAP.

CLUSTER CREA/CREA QUALSIASI/MODIFICA QUALSIASI/SCENDI QUALSIASI CLUSTER
BANCA DATI ALTER DATABASE, ALTER SYSTEM, SISTEMA DI AUDIT
INDICE CREA QUALSIASI/ALTER QUALSIASI/CANCELLA QUALSIASI INDICE
PROFILO CREA/MODIFICA/CASCI PROFILO
RUOLO CREA/MODIFICA QUALSIASI/CASCI QUALSIASI/CONCEDI QUALSIASI (consente REVOCA)
Segmento di rollback CREATE/ALTER/DROP ROLLBACK SEGMENT
UTENTE CREA/MODIFICA/DIVENTA/ELIMINA UTENTE
VISUALIZZA CREA/CREA QUALSIASI/SCENDI QUALSIASI VISTA
SINONIMI CREA/CREA QUALSIASI/CREA PUBBLICO/DROP ANY/DROP PUBLIC SINONIMI
SESSIONE CREATE/ALTER/RESTRICTED SESSION, MODIFICARE IL COSTO DELLE RISORSE
TABELLA CREA/CREA QUALSIASI/MODIFICA QUALSIASI/DROP QUALSIASI/SELEZIONARE QUALSIASI/INSERIRE QUALSIASI/AGGIORNA QUALSIASI/CANCELLA QUALSIASI/BLOCCA QUALSIASI TABELLA
TABLESPACE CREA/ALTER/DROP/MANAGE TABLESPACE

Di solito, l'amministratore di un database concede i privilegi agli utenti. Tuttavia, ci sono casi in cui l'amministratore deve trasferire i propri privilegi utente Oracle. Questo è quando entrano in gioco i privilegi DBA. Se un DBA deve fornire privilegi di sistema a un'altra persona, deve essere fatto con l'opzione admin:

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

Oltre ai privilegi di sistema Oracle, i privilegi degli oggetti vengono concessi sugli oggetti del database:tabelle, viste, procedure e così via.

Come creare e concedere tutti i privilegi all'utente Oracle

Innanzitutto, dobbiamo concedere ai nostri utenti il ​​privilegio di sistema per accedere al database. Usiamo la seguente affermazione per questo:

GRANT CREATE SESSION to visitor;

Ci sono molte autorizzazioni che l'amministratore del database può fornire all'utente. Ma è essenziale attenersi al concetto primario di sicurezza, che è quello di fornire agli utenti il ​​minimo di privilegi necessari per svolgere il lavoro in modo efficiente. Ecco perché non è consigliabile fornire tutti i privilegi all'utente.

Puoi applicare altri privilegi uno per uno, ciascuno con una dichiarazione separata. Oppure è possibile combinare queste autorizzazioni in una, come mostrato di seguito:

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

Se a questo utente definito è consentito modificare tabelle, procedure, trigger, ecc., la sintassi per impostare i privilegi necessari per ciascun caso è la seguente. Ancora una volta, fai molta attenzione quando consenti all'utente di modificare qualsiasi elemento, poiché questa autorizzazione è globale.

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

Per consentire all'utente di eliminare elementi, utilizziamo le seguenti affermazioni:

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

Come concedere il privilegio tabella all'utente in Oracle

Prima di impostare i privilegi per un determinato utente, dovresti considerare quali attività quella persona deve eseguire nel database. Gli scenari più comuni includono la creazione di tabelle, viste, procedure, trigger. Alcuni casi richiedono la possibilità di modificare o eliminare tali elementi. A seconda della situazione, l'amministratore definisce quali privilegi di sistema fornire.

Diamo un'occhiata più da vicino a come concedere CREATE TABLE privilegio a un utente in Oracle. Se siamo disposti a consentire al nostro utente – visitatore – per creare tabelle nel database, utilizzeremo la seguente query:

GRANT CREATE TABLE to visitor;

Crea utenti Oracle e concedi autorizzazioni facilmente con dbForge Studio per Oracle

Se lavori quotidianamente con i database Oracle e cerchi un IDE all-in-one potente e conveniente, la tua ricerca finisce qui. dbForge Studio per Oracle aiuta gli sviluppatori a velocizzare la codifica PL/SQL, fornisce strumenti versatili per la modifica dei dati per la gestione dei dati interni ed esterni.

In questo articolo creeremo un utente Oracle e concederemo privilegi DBA utilizzando questo script multiuso:

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

Quello che stiamo facendo nello script fornito è:

  • creazione di un nuovo utente
  • concessione dei privilegi DBA all'utente appena creato
  • impostare l'utente appena creato come predefinito per la sessione corrente

In Oracle, utenti e schemi sono essenzialmente la stessa cosa. Puoi considerare che un utente è un account per connettersi a un database e uno schema è l'insieme di oggetti che appartengono a quell'account. Lo schema appena creato è vuoto e, pertanto, non verrà visualizzato in Esplora database .

Creiamo un reparti tabella per far apparire il nuovo utente nell'elenco. Per farlo, sentiti libero di usare il seguente script:

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

Tieni presente che non è necessario aprire un documento SQL diverso per questa operazione. dbForge Studio per Oracle consente di eseguire il codice solo parzialmente. Seleziona semplicemente il CREATE TABLE clausola, fai clic con il pulsante destro del mouse e scegli Esegui selezione .

Se hai AutoComit funzione ON, il passaggio precedente sarà l'ultimo. Tuttavia, se è disattivato, dovrai eseguire il commit delle modifiche. Quindi, durante l'aggiornamento di Database Explorer, vedrai nomeutente1 nell'elenco.

Ci sono casi in cui le vecchie sessioni rimangono in esecuzione sul server. Potrebbero interferire con l'esecuzione di nuovi comandi. Nel codice sopra, tutte le vecchie sessioni vengono automaticamente individuate e rimosse dal server. Se è necessario riavviare la sessione corrente, è possibile disconnetterla o interromperla utilizzando una di queste query:

  • ALTER SYSTEM DISCONNECT SESSION
  • ALTER SYSTEM KILL SESSION

Come eliminare (eliminare) un utente in Oracle

Nel caso in cui sia necessario rimuovere qualsiasi utente per qualsiasi motivo, è necessario utilizzare il DROP USER comando con la seguente sintassi:

DROP USER <username>;

Nel nostro test case, stiamo rimuovendo l'utente visitatore creato in precedenza:

DROP USER visitor;

Tuttavia, ci sono diverse restrizioni a cui devi prestare attenzione prima di abbandonare l'utente:

  • Non puoi rimuovere utenti senza eliminare tutti gli oggetti correlati. Pertanto, è necessario eliminare tutte le tabelle, viste, procedure, ecc. che questo utente ha creato prima di procedere al comando DROP.
  • Non puoi rimuovere gli utenti che sono collegati al database. Innanzitutto, devi cancellare tutte le sessioni che l'utente ha avuto. Successivamente, puoi eliminare l'utente stesso.

C'è un comando speciale che permette di far cadere l'utente con tutti i suoi oggetti del database in un colpo solo:

DROP USER <username> CASCADE;

Conclusione

Riassumendo, ora puoi utilizzare Oracle SQL CREATE USER comando per aggiungere nuovi utenti, configurarli e gestirli. Abbiamo usato gli esempi per le prestazioni manuali. Tuttavia, le capacità delle moderne soluzioni software per i database Oracle possono semplificare questo lavoro, renderlo più veloce e accurato. Sentiti libero di provare dbForge Studio con un .

Link utili

  • Configurazione di un nuovo account utente in Oracle
  • Strumenti di amministrazione del database Oracle
  • Crea un database in Oracle
  • Tabella Rinomina Oracle
  • Tabella Oracle Alter