Oracle
 sql >> Base de données >  >> RDS >> Oracle

Créer un nouvel utilisateur Oracle et accorder des privilèges :syntaxe et exemples

Dans cet article, nous expliquerons comment créer un utilisateur dans Oracle. Vous apprendrez à ajouter de nouveaux utilisateurs de base de données, à déterminer les aspects supplémentaires que ce travail implique :de la création initiale de l'utilisateur à sa suppression. De plus, vous trouverez quelques conseils utiles sur l'utilisation de IDENTIFY et TABLESPACE clauses, ainsi que comment GRANT rôles et autorisations dans Oracle.

Contenu

  • Comment créer un nouvel utilisateur dans Oracle
  • Exemples de syntaxe Oracle CREATE USER
  • Comment créer des utilisateurs par défaut avec des paramètres par défaut
  • Créer un utilisateur identifié par des clauses
    • Créer une clause d'utilisateur identifié par mot de passe
    • Clauses externes et globales
  • CREATE USER avec la clause Tablespace
    • Tablespace par défaut
    • Tablespace temporaire
    • Quota
  • Créer des attributs utilisateur
    • Profil
    • Expiration du mot de passe
    • Verrouiller/Déverrouiller le compte
  • Attribuer un rôle à l'utilisateur
  • Accorder une autorisation dans Oracle
  • Syntaxe de la commande GRANT
  • Privilèges utilisateur Oracle
  • Comment créer et accorder tous les privilèges à un utilisateur Oracle
  • Comment accorder le privilège de table à l'utilisateur dans Oracle
  • Créez des utilisateurs Oracle et accordez facilement des autorisations avec dbForge Studio pour Oracle
  • Comment supprimer (supprimer) un utilisateur dans Oracle
  • Conclusion

Comment créer un nouvel utilisateur dans Oracle

Avant de commencer, vous devez vérifier si vous disposez des privilèges système nécessaires pour créer des utilisateurs. Si ce n'est pas le cas, assurez-vous de les attribuer à votre compte. Après cela, vous pouvez passer aux tâches pratiques. Les exemples de cet article concernent la version créer un utilisateur Oracle 19c, mais les méthodes sont les mêmes pour toutes les versions Oracle utilisées (y compris Oracle 10g, 11g, 12c, etc.).

Exemples de syntaxe Oracle CREATE USER

Pour commencer, nous examinerons Oracle CREATE USER syntaxe. Tout d'abord, nous verrons comment en créer un avec les paramètres par défaut. Après cela, nous passerons aux différentes variantes du IDENTIFIED clause, clause tablespace et autres particularités de CREATE USER syntaxe dans Oracle.

Comment créer des utilisateurs par défaut avec des paramètres par défaut

Il est toujours préférable de commencer par les bases. Ainsi, concentrons-nous sur le CREATE USER commande par lui-même. Tel quel, il créera un utilisateur avec des attributs par défaut. Plus loin dans cet article, nous verrons comment configurer plus finement les utilisateurs et comment cela renforce la sécurité de la base de données en général.

Créer un utilisateur identifié par des clauses

Le IDENTIFIED La clause vous permet d'indiquer comment la base de données Oracle authentifie un utilisateur. Examinons de plus près différents exemples de IDENTIFIED syntaxe dans Oracle.

Créer une clause d'utilisateur identifié par mot de passe

Dans le cas le plus simple, nous créons un nouvel utilisateur local sous le nom d'utilisateur. L'utilisateur devra entrer le mot de passe pour se connecter au système :

CREATE USER <username> IDENTIFIED BY <password>;

Le nom d'utilisateur peut être n'importe quoi. Cependant, le mot de passe doit être composé de caractères à un octet du jeu de caractères de la base de données. Si le jeu de caractères contient également des caractères multi-octets, cela ne change pas l'exigence de mot de passe - utilisez uniquement des caractères à un octet.

CREATE USER visitor
  IDENTIFIED BY psw4visits;

Clauses externes et globales

Outre l'identification par mot de passe, vous pouvez utiliser l'un des deux autres moyens d'authentification de l'utilisateur. Il s'agira de configurer un utilisateur externe ou un utilisateur global. Pour ce faire, vous devez inclure le EXTERNALLY ou GLOBALLY clause dans le CREATE USER Commande Oracle.

EXTERNALLY permet de créer un utilisateur externe. Dans ce cas, l'utilisateur est authentifié par un système externe, tel que le système d'exploitation. Par exemple, un utilisateur de base de données Oracle est un utilisateur Windows. Ainsi, ils peuvent accéder à la base de données après s'être authentifiés par Windows sans entrer d'autres mots de passe. Travailler sous l'utilisateur externe est une option standard pour les utilisateurs réguliers de la base de données. Mais ces utilisateurs n'ont que des rôles standard (CONNECT et RESOURCE), sans privilèges d'administrateur ou d'opérateur de base de données.

Pour créer un utilisateur externe, nous exécutons l'instruction ci-dessous :

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

De cette façon, nous avons créé un nouvel utilisateur externe pour notre base de données. Le nom est external_user1. Aucun mot de passe supplémentaire n'est nécessaire. Nous avons attribué à cet utilisateur le tablespace par défaut tbs_new_10 avec un quota de 10 Mo. D'autres limitations sont définies par le external_user_profile1 appliqué à cet utilisateur.

Comme nous l'avons mentionné précédemment, différents systèmes externes peuvent maintenir et gérer les utilisateurs externes dans la base de données Oracle. L'utilisation des capacités du système d'exploitation est l'option la plus courante. Ainsi, si nous voulons créer un utilisateur de base de données externe accessible par le compte système dans le système d'exploitation, nous n'avons qu'à modifier légèrement notre déclaration. Nous ajouterons le préfixe ops$ au nom d'utilisateur :

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

GLOBALLY permet de créer des utilisateurs globaux. Cela signifie que leurs identifiants et mots de passe sont stockés sur le Central Oracle Security Server au lieu de la base de données spécifique. En outre, les rôles attribués aux utilisateurs globaux sur ce serveur central s'appliquent à cet utilisateur dans n'importe quelle base de données. Il ne sera pas nécessaire de configurer le rôle d'utilisateur dans une base de données distincte. Notez que vous devez activer l'option d'authentification unique pour les utilisateurs globaux.

Pour créer un utilisateur de base de données global, nous utilisons l'instruction suivante :

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

Nous avons maintenant un nouvel utilisateur de base de données global sous le nom de global_user1 . Nous avons attribué des UTILISATEURS tablespace par défaut à cet utilisateur avec une citation de 10M.

CREATE USER avec la clause Tablespace

Passons maintenant en revue le script de création de base d'Oracle pour un nouvel utilisateur. C'est ci-dessous :

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

Comme vous le voyez, le script comprend plusieurs clauses que nous devons prendre en considération :

Tablespace par défaut

Cette clause spécifie l'espace de table par défaut pour les objets créés par l'utilisateur. Sinon, ces objets sont stockés dans l'espace de table par défaut de la base de données. Si aucun tablespace par défaut n'est spécifié pour cette base de données particulière, les objets entreront dans le tablespace système.

Restriction :ne spécifiez pas l'espace de table temporaire géré localement (tel que l'espace de table d'annulation ou l'espace de table temporaire géré par dictionnaire) comme étant l'espace de table par défaut de l'utilisateur créé par Oracle.

Tablespace temporaire

Cette clause spécifie le tablespace/tablespace groupe destiné à contenir les segments temporaires de l'utilisateur. Sans cela, les segments temporaires de ces utilisateurs sont stockés dans le tablespace temporaire par défaut de la base de données du tablespace système. Lorsque vous spécifiez le groupe d'espaces disque logiques, y compris la valeur tablespace_group_name dans le script, les segments temporaires des utilisateurs peuvent être enregistrés dans n'importe quel espace disque logique de ce groupe.

Remarque  :
Assurez-vous de spécifier l'espace de table temporaire avec une taille de bloc standard. Il ne peut pas s'agir du tablespace d'annulation ou du tablespace avec gestion automatique de l'espace segment.

Quota

Cette clause spécifie la quantité d'espace que cet utilisateur peut allouer dans le tablespace. QUOTA multiples clauses dans un Oracle CREATE USER La commande peut être présente si vous devez spécifier plusieurs tablespaces.
La clause peut inclure le UNLIMITED définition pour permettre à cet utilisateur défini d'allouer le tablespace autant que nécessaire, sans limites.

Restriction :le QUOTA La clause ne s'applique pas aux tablespaces temporaires.

Créer des attributs utilisateur

Il existe d'autres options Oracle CREATE USER attributs que vous pouvez inclure dans la syntaxe. Jetez un œil à l'exemple suivant :

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

Passons en revue ces clauses facultatives.

Profil

Cette clause facultative vous permet de limiter immédiatement les ressources de la base de données pour cet utilisateur spécifique lorsque les limitations sont définies dans le profil particulier. Sans cette clause, un nouvel utilisateur passe automatiquement sous le profil par défaut.

Expiration du mot de passe

La clause est facultative, mais de nombreux administrateurs de base de données la définissent pour une sécurité plus efficace. Si elle est incluse, cette clause déterminera le changement forcé du mot de passe du côté de l'utilisateur. Cela se produit généralement lorsque l'utilisateur tente de se connecter à la base de données pour la première fois.

Verrouiller/Déverrouiller le compte

Vous pouvez utiliser l'une de ces clauses. Avec LOCK appliqué, Oracle crée le compte d'utilisateur, mais ce compte n'aura pas accès à la base de données. Si vous appliquez le UNLOCK clause ou ne spécifiez aucune de ces deux clauses, le compte sera utilisable immédiatement. L'état déverrouillé est la valeur par défaut.

Le CREATE USER l'instruction avec ces paramètres supplémentaires serait la suivante :

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	

Ici, la déclaration crée un nouvel utilisateur de base de données Oracle nommé visiteur , avec le mot de passe migzw23ter . Cet utilisateur se voit attribuer le tablespace par défaut tbs_new_10 avec un quota de 50Mb. Cet utilisateur est également autorisé à utiliser le tablespace temporaire tbs_temp_10 .

Attribuer un rôle à l'utilisateur

La première étape est la création d'un utilisateur. La prochaine consiste à définir les droits de l'utilisateur. Un utilisateur nouvellement créé n'est pas autorisé à faire quoi que ce soit, même à se connecter à la base de données.

Travailler avec des bases de données Oracle inclut inévitablement la tâche de créer des utilisateurs de base de données. Il y a les comptes d'utilisateurs système qu'Oracle crée lui-même - hr , OE , sys , etc. Ces comptes ont des configurations prédéfinies avec des droits et des limitations. Cependant, le travail quotidien nécessitera toujours d'autres utilisateurs.

L'une des tâches du DBA est de créer des utilisateurs de base de données supplémentaires. Le travail comprend la configuration des comptes d'utilisateurs, la définition des privilèges et la gestion des utilisateurs en fonction des objectifs commerciaux.

Accorder une autorisation dans Oracle

En utilisant le GRANT commande, vous pouvez fournir aux utilisateurs certains privilèges et configurer leurs rôles en fonction de vos besoins. Dans Oracle, vous pouvez accorder votre autorisation à d'autres personnes afin qu'elles puissent manipuler et gérer les données de votre base de données. GRANT est une déclaration très puissante avec de nombreuses options possibles, mais la fonctionnalité principale consiste à gérer les privilèges des utilisateurs et des rôles dans la base de données.

Syntaxe de la commande GRANT

La syntaxe de base de la requête pour accorder certains privilèges à l'utilisateur est la suivante :

GRANT <permission> to <user>;

Privilèges utilisateur Oracle

La GRANT La commande peut donner aux utilisateurs des privilèges pour créer, modifier, supprimer et gérer des objets de base de données. Par exemple, les privilèges de créer des espaces de table et de supprimer les lignes de n'importe quelle table dans une base de données sont des privilèges système.

Oracle dispose de plus de 100 privilèges système qui peuvent être trouvés dans la table SYSTEM_PRIVILEGE_MAP.

CLUSTER CRÉER/CRÉER N'IMPORTE QUEL/MODIFIER N'IMPORTE QUEL/SUPPRIMER N'IMPORTE QUEL CLUSTER
BASE DE DONNÉES ALTER DATABASE, ALTER SYSTEM, SYSTÈME D'AUDIT
INDEX CRÉER N'IMPORTE QUEL / MODIFIER N'IMPORTE QUEL / SUPPRIMER N'IMPORTE QUEL INDEX
PROFIL CRÉER/MODIFIER/SUPPRIMER LE PROFIL
RÔLE CREATE/ALTER ANY/DOP ANY/GRANT ANY (permet REVOKE)
Segment d'annulation CRÉER/MODIFIER/SUPPRIMER UN SEGMENT DE ROLLBACK
UTILISATEUR CRÉER/MODIFIER/DEVENIR/ANNULER UN UTILISATEUR
AFFICHER CRÉER/CRÉER N'IMPORTE QUELLE/SUPPRIMER N'IMPORTE QUELLE VUE
SYNONYME CRÉER/CRÉER TOUT/CRÉER PUBLIC/SUPPRIMER TOUT/SUPPRIMER SYNONYME PUBLIC
SÉANCE CRÉER/MODIFIER/SESSION RESTREINTE, MODIFIER LE COÛT DES RESSOURCES
TABLEAU CRÉER/CRÉER TOUT/MODIFIER TOUT/SUPPRIMER TOUT/SÉLECTIONNER TOUT/INSÉRER TOUT/METTRE À JOUR TOUT/SUPPRIMER TOUT/VERROUILLER TOUTE TABLE
TABLESPACE CRÉER/MODIFIER/SUPPRIMER/GÉRER TABLESPACE

Habituellement, l'administrateur d'une base de données accorde les privilèges aux utilisateurs. Cependant, il existe des cas où l'administrateur doit transférer ses privilèges d'utilisateur Oracle. C'est à ce moment que les privilèges DBA entrent en jeu. Si un DBA doit fournir des privilèges système à une autre personne, cela doit être fait avec l'option admin :

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

Outre les privilèges système Oracle, des privilèges d'objet sont accordés sur les objets de la base de données :tables, vues, procédures, etc.

Comment créer et accorder tous les privilèges à l'utilisateur Oracle

Tout d'abord, nous devons accorder à nos utilisateurs le privilège système de se connecter à la base de données. Nous utilisons la déclaration suivante pour cela :

GRANT CREATE SESSION to visitor;

Il existe de nombreuses autorisations que l'administrateur de la base de données peut accorder à l'utilisateur. Mais il est essentiel de s'en tenir au concept premier de la sécurité, qui est de donner aux utilisateurs le minimum de privilèges nécessaires pour faire le travail efficacement. C'est pourquoi il n'est pas recommandé de fournir tous les privilèges à l'utilisateur.

Vous pouvez appliquer d'autres privilèges un par un, chacun par une déclaration distincte. Ou, il est possible de combiner ces autorisations en une seule, comme indiqué ci-dessous :

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

Si cet utilisateur défini est autorisé à modifier les tables, les procédures, les déclencheurs, etc., la syntaxe pour définir le privilège nécessaire pour chaque cas est ci-dessous. Encore une fois, soyez très prudent lorsque vous autorisez l'utilisateur à modifier des éléments, car cette autorisation est globale.

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

Pour permettre à l'utilisateur de supprimer des éléments, nous utilisons les instructions ci-dessous :

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

Comment accorder le privilège de table à l'utilisateur dans Oracle

Avant de définir les privilèges d'un utilisateur particulier, vous devez déterminer les tâches que cette personne doit effectuer dans la base de données. Les scénarios les plus courants incluent la création de tables, de vues, de procédures et de déclencheurs. Certains cas nécessitent la possibilité de modifier ou de supprimer ces éléments. Selon la situation, l'administrateur définit les privilèges système à fournir.

Examinons de plus près comment accorder CREATE TABLE privilège à un utilisateur dans Oracle. Si nous sommes disposés à autoriser notre utilisateur - visiteur – pour créer des tables dans la base de données, nous utiliserons la requête suivante :

GRANT CREATE TABLE to visitor;

Créez facilement des utilisateurs Oracle et accordez des autorisations avec dbForge Studio pour Oracle

Si vous travaillez quotidiennement avec des bases de données Oracle et que vous recherchez un puissant IDE tout-en-un pratique, votre recherche se termine ici. dbForge Studio pour Oracle aide les développeurs à accélérer le codage PL/SQL, fournit des outils d'édition de données polyvalents pour gérer les données internes et externes.

Dans cet article, nous allons créer un utilisateur Oracle et accorder des privilèges DBA à l'aide de ce script polyvalent :

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

Ce que nous faisons dans le script fourni, c'est :

  • créer un nouvel utilisateur
  • accorder des privilèges DBA à l'utilisateur nouvellement créé
  • définir l'utilisateur nouvellement créé comme utilisateur par défaut pour la session en cours

Dans Oracle, les utilisateurs et les schémas sont essentiellement la même chose. Vous pouvez considérer qu'un utilisateur est un compte pour se connecter à une base de données, et qu'un schéma est l'ensemble des objets qui appartiennent à ce compte. Le schéma nouvellement créé est vide et, par conséquent, ne sera pas affiché dans Database Explorer .

Créons un services tableau pour faire apparaître le nouvel utilisateur dans la liste. Pour cela, n'hésitez pas à utiliser le script suivant :

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

N'oubliez pas qu'il n'est pas nécessaire d'ouvrir un document SQL différent pour cette opération. dbForge Studio for Oracle vous permet d'exécuter le code seulement partiellement. Sélectionnez simplement le CREATE TABLE clause, faites un clic droit et choisissez Exécuter la sélection .

Si vous avez le AutoComit activée, l'étape précédente sera la dernière. Cependant, s'il est désactivé, vous devrez valider les modifications. Ensuite, lors de l'actualisation de l'explorateur de base de données, vous verrez username1 dans la liste.

Il existe des cas où d'anciennes sessions restent en cours d'exécution sur le serveur. Ils pourraient interférer avec l'exécution de nouvelles commandes. Dans le code ci-dessus, toutes les anciennes sessions sont automatiquement localisées et supprimées du serveur. Si vous avez besoin de redémarrer votre session en cours, vous pouvez la déconnecter ou la fermer en utilisant l'une de ces requêtes :

  • ALTER SYSTEM DISCONNECT SESSION
  • ALTER SYSTEM KILL SESSION

Comment supprimer (abandonner) un utilisateur dans Oracle

Si vous devez supprimer un utilisateur pour une raison quelconque, vous devez utiliser le DROP USER commande avec la syntaxe suivante :

DROP USER <username>;

Dans notre cas de test, nous supprimons l'utilisateur visiteur créé précédemment :

DROP USER visitor;

Cependant, il existe plusieurs restrictions auxquelles vous devez prêter attention avant de supprimer l'utilisateur :

  • Vous ne pouvez pas supprimer des utilisateurs sans supprimer tous les objets associés. Ainsi, vous devez supprimer toutes les tables, vues, procédures, etc. que cet utilisateur a créées avant de passer à la commande DROP.
  • Vous ne pouvez pas supprimer les utilisateurs connectés à la base de données. Tout d'abord, vous devez effacer toutes les sessions de l'utilisateur. Après cela, vous pouvez supprimer l'utilisateur lui-même.

Il existe une commande spéciale qui permet de supprimer l'utilisateur avec tous ses objets de base de données en une seule fois :

DROP USER <username> CASCADE;

Conclusion

En résumé, vous pouvez maintenant utiliser Oracle SQL CREATE USER commande pour ajouter de nouveaux utilisateurs, les configurer et les gérer. Nous avons utilisé les exemples pour les performances manuelles. Cependant, les capacités des solutions logicielles modernes pour les bases de données Oracle peuvent simplifier ce travail, le rendre plus rapide et plus précis. N'hésitez pas à essayer dbForge Studio avec un .

Liens utiles

  • Configuration d'un nouveau compte utilisateur dans Oracle
  • Outils d'administration de base de données Oracle
  • Créer une base de données dans Oracle
  • Table de renommage d'Oracle
  • Oracle Alter Table