
🧪 Envie de pratiquer ? Exécutez les exemples de cet article dans notre SQL Playground gratuit — aucun logiciel à installer.
CREATE USER Oracle : comment créer un utilisateur SQL
La commande CREATE USER Oracle est l’instruction SQL fondamentale permettant de créer un compte utilisateur dans une base de données Oracle. Indispensable pour tout administrateur de base de données (DBA), elle permet de contrôler les accès, de sécuriser les données et de gérer les ressources système. Maîtriser CREATE USER Oracle est une compétence essentielle dans tout environnement professionnel utilisant Oracle Database.
Définition et utilisation de CREATE USER dans Oracle
La commande CREATE USER est une instruction DDL (Data Definition Language) d’Oracle SQL qui permet de créer un nouveau compte utilisateur dans une instance Oracle Database. Un utilisateur Oracle est une entité qui peut se connecter à la base de données, posséder des objets (tables, vues, procédures…) et disposer de privilèges spécifiques.
Cas d’usage en entreprise
Dans un contexte professionnel, CREATE USER est utilisé dans de nombreuses situations :
- Création de comptes applicatifs : chaque application métier (ERP, CRM, etc.) dispose généralement de son propre utilisateur dédié afin d’isoler les accès aux données.
- Gestion des développeurs : les équipes de développement reçoivent des comptes distincts pour travailler sur des schémas spécifiques sans risquer d’interférer avec la production.
- Séparation des responsabilités : un utilisateur peut être limité à certaines tables ou procédures, conformément aux politiques de sécurité interne (principe du moindre privilège).
- Gestion des espaces disque : il est possible de définir des quotas sur les tablespaces pour éviter qu’un utilisateur ne consomme trop de ressources.
Note importante : La création d’un utilisateur ne lui accorde aucun droit par défaut. Il est nécessaire d’attribuer ensuite des privilèges via les commandes GRANT et ROLE.
Syntaxe complète de CREATE USER Oracle
Voici la syntaxe officielle de la commande CREATE USER dans Oracle Database :
CREATE USER nom_utilisateur
IDENTIFIED { BY mot_de_passe
| EXTERNALLY [ AS 'nom_externe' ]
| GLOBALLY [ AS 'nom_global' ] }
[ DEFAULT TABLESPACE nom_tablespace ]
[ TEMPORARY TABLESPACE nom_tablespace_temp ]
[ QUOTA { taille [ K | M | G ] | UNLIMITED } ON nom_tablespace ]
[ PROFILE nom_profil ]
[ PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ];Explication des paramètres essentiels
| Paramètre | Description | Obligatoire |
|---|---|---|
nom_utilisateur | Nom unique du compte utilisateur Oracle (max 128 caractères) | Oui |
IDENTIFIED BY | Définit le mot de passe de connexion local à la base | Oui |
IDENTIFIED EXTERNALLY | Authentification via le système d’exploitation | Non |
IDENTIFIED GLOBALLY | Authentification via Oracle Internet Directory (LDAP) | Non |
DEFAULT TABLESPACE | Tablespace par défaut pour stocker les objets de l’utilisateur | Non |
TEMPORARY TABLESPACE | Tablespace temporaire utilisé pour les tris et opérations intermédiaires | Non |
QUOTA | Limite d’espace allouée à l’utilisateur sur un tablespace donné | Non |
PROFILE | Profil de ressources et de sécurité appliqué à l’utilisateur | Non |
PASSWORD EXPIRE | Force l’utilisateur à changer son mot de passe à la première connexion | Non |
ACCOUNT LOCK / UNLOCK | Verrouille ou déverrouille le compte utilisateur | Non |
Exemples pratiques de CREATE USER Oracle
Exemple 1 : Création d’un utilisateur applicatif simple
Contexte métier : Un projet de gestion commerciale nécessite la création d’un utilisateur dédié à l’application de vente. Cet utilisateur doit disposer de son propre espace de stockage et être obligé de changer son mot de passe à la première connexion.
-- Création d'un utilisateur pour l'application de vente
CREATE USER app_vente
IDENTIFIED BY "V3nte$2024" -- Mot de passe initial sécurisé
DEFAULT TABLESPACE tbs_donnees -- Tablespace principal pour ses objets
TEMPORARY TABLESPACE temp -- Tablespace pour les opérations temporaires
QUOTA 500M ON tbs_donnees -- Limite de 500 Mo sur le tablespace
PASSWORD EXPIRE -- Oblige le changement de mot de passe à la 1ère connexion
ACCOUNT UNLOCK; -- Compte actif dès la création
-- Attribution des privilèges minimaux nécessaires
GRANT CREATE SESSION TO app_vente; -- Permet la connexion à la base
GRANT CREATE TABLE TO app_vente; -- Permet la création de tables dans son schémaDans cet exemple, l’utilisateur app_vente est créé avec une politique de sécurité stricte. Le quota de 500 Mo évite une consommation excessive du tablespace de données, et le PASSWORD EXPIRE garantit que le mot de passe temporaire sera changé immédiatement.
Exemple 2 : Création d’un utilisateur DBA pour l’environnement de test
Contexte métier : Un développeur senior rejoint l’équipe et doit accéder à l’environnement de test Oracle avec des droits étendus pour valider les migrations de schéma.
-- Création d'un utilisateur développeur avec droits étendus sur l'environnement de test
CREATE USER dev_migration
IDENTIFIED BY "M!gr@tion99" -- Mot de passe conforme à la politique de sécurité
DEFAULT TABLESPACE tbs_test -- Tablespace dédié à l'environnement de test
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON tbs_test -- Aucune limite sur le tablespace de test
PROFILE profil_developpeur -- Profil avec règles adaptées aux devs (tentatives, délais)
ACCOUNT UNLOCK;
-- Attribution d'un rôle avec plusieurs privilèges regroupés
GRANT CONNECT TO dev_migration; -- Rôle de connexion de base
GRANT RESOURCE TO dev_migration; -- Rôle permettant la création d'objets
GRANT SELECT ANY TABLE TO dev_migration; -- Lecture sur toutes les tables (env. de test uniquement)L’utilisation du paramètre PROFILE permet ici d’appliquer un ensemble de règles prédéfinies (nombre maximum de tentatives de connexion, durée de vie du mot de passe, etc.) propres aux développeurs.
Erreurs courantes avec CREATE USER Oracle
Erreur ORA-01920 : User name conflicts with another user or role name
Description : Cette erreur survient lorsque vous tentez de créer un utilisateur dont le nom existe déjà dans la base de données Oracle, qu’il s’agisse d’un utilisateur ou d’un rôle portant le même identifiant.
Exemple d’erreur :
-- Tentative de création d'un utilisateur déjà existant
CREATE USER app_vente IDENTIFIED BY "NouveauMdp";
-- ORA-01920: user name 'APP_VENTE' conflicts with another user or role nameSolution : Avant de créer un utilisateur, vérifiez son existence dans la vue DBA_USERS :
-- Vérification de l'existence de l'utilisateur avant création
SELECT username, account_status, created
FROM dba_users
WHERE username = 'APP_VENTE';
-- Si l'utilisateur existe et doit être recréé, supprimez-le d'abord (avec précaution !)
DROP USER app_vente CASCADE; -- CASCADE supprime également tous les objets du schéma
-- Puis recréez-le avec les nouveaux paramètres
CREATE USER app_vente IDENTIFIED BY "NouveauMdp2024";Attention : L’option CASCADE de DROP USER est irréversible en production. Effectuez toujours une sauvegarde préalable.
Résumé : points clés de CREATE USER Oracle
| Point clé | Détail |
|---|---|
| Type d’instruction | DDL (Data Definition Language) |
| Privilège requis | CREATE USER (accordé au rôle DBA par défaut) |
| Authentification | Par mot de passe, externe (OS) ou globale (LDAP/OID) |
| Droits post-création | Aucun par défaut — nécessite des GRANT explicites |
| Gestion de l’espace | Paramètre QUOTA pour limiter l’utilisation des tablespaces |
| Sécurité renforcée | PASSWORD EXPIRE et PROFILE pour les politiques de mot de passe |
| Vue de contrôle | DBA_USERS pour consulter les utilisateurs existants |
Bonnes pratiques Oracle
- Toujours spécifier un DEFAULT TABLESPACE explicite : ne pas laisser Oracle affecter le tablespace SYSTEM par défaut, qui est réservé au dictionnaire de données. Créez des tablespaces dédiés par application ou par environnement.
- Appliquer le principe du moindre privilège : n’accordez que les droits strictement nécessaires au compte créé. Évitez d’attribuer les rôles
DBAouSYSDBAà des comptes applicatifs. Utilisez des profils (PROFILE) pour encadrer les politiques de mot de passe et les limites de ressources.
Aller plus loin sur la gestion des utilisateurs Oracle
La création d’un utilisateur Oracle n’est que la première étape d’une gestion complète des accès à votre base de données. Pour approfondir vos connaissances, nous vous recommandons de consulter les sujets suivants :
- La commande GRANT Oracle : apprenez à accorder des privilèges système et objets à vos utilisateurs pour définir précisément ce qu’ils peuvent faire.
- La commande DROP USER Oracle : découvrez comment supprimer un utilisateur Oracle en toute sécurité, avec ou sans l’option CASCADE.
- La commande CREATE ROLE Oracle : maîtrisez la création de rôles pour simplifier la gestion des droits sur de nombreux utilisateurs simultanément.
Sur le même thème
- Flashback Query Oracle : Interroger les données passées
- AUDIT Oracle SQL : Surveiller et tracer les accès
- RMAN Oracle : Sauvegarde et Restauration de Base de Données
- EXPLAIN PLAN Oracle : analyser les requêtes SQL
- GRANT Oracle : Gérer les Droits et Privilèges SQL
- SAVEPOINT Oracle : Gérer les points de sauvegarde SQL
