> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation sur rôle

# CREATE ROLE

Crée un ou plusieurs [rôles](/fr/concepts/features/security/access-rights#role-management). Un rôle est un ensemble de [privilèges](/fr/reference/statements/grant#granting-privilege-syntax). Un [utilisateur](/fr/reference/statements/create/user) auquel un rôle est attribué obtient tous les privilèges associés à ce rôle.

Syntaxe :

```sql theme={null}
CREATE ROLE [IF NOT EXISTS | OR REPLACE] name1 [, name2 [,...]] [ON CLUSTER cluster_name]
    [IN access_storage_type]
    [SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] | PROFILE 'profile_name'] [,...]
```

`CREATE ROLE` requiert le privilège [CREATE ROLE](/fr/reference/statements/grant#access-management). `OR REPLACE` supprime un rôle existant portant le même nom, ainsi que les privilèges qui lui ont été accordés, et requiert donc en plus le privilège [DROP ROLE](/fr/reference/statements/grant#access-management). Le privilège `DROP ROLE` est requis pour chaque nom listé dans l'instruction, que ce rôle existe déjà ou non ; l'instruction ne peut donc pas être utilisée pour découvrir quels rôles existent.

## Gestion des rôles

Un utilisateur peut se voir attribuer plusieurs rôles. Les utilisateurs peuvent appliquer leurs rôles attribués dans des combinaisons arbitraires à l’aide de l’instruction [SET ROLE](/fr/reference/statements/set-role). La portée finale des privilèges correspond à l’ensemble cumulé de tous les privilèges de tous les rôles appliqués. Si des privilèges sont accordés directement à son compte utilisateur, ils sont également cumulés avec les privilèges accordés par les rôles.

Un utilisateur peut avoir des rôles par défaut, qui s’appliquent lors de sa connexion. Pour définir les rôles par défaut, utilisez l’instruction [SET DEFAULT ROLE](/fr/reference/statements/set-role#set-default-role) ou l’instruction [ALTER USER](/fr/reference/statements/alter/user).

Pour révoquer un rôle, utilisez l’instruction [REVOKE](/fr/reference/statements/revoke).

Pour supprimer un rôle, utilisez l’instruction [DROP ROLE](/fr/reference/statements/drop#drop-role). Le rôle supprimé est automatiquement révoqué pour tous les utilisateurs et rôles auxquels il était attribué.

## Exemples

```sql theme={null}
CREATE ROLE accountant;
GRANT SELECT ON db.* TO accountant;
```

Cette suite de requêtes crée le rôle `accountant`, qui dispose du privilège de lire les données de la base de données `db`.

Attribution du rôle à l’utilisateur `mira` :

```sql theme={null}
GRANT accountant TO mira;
```

Une fois le rôle attribué, l'utilisateur peut l'utiliser et exécuter les requêtes autorisées. Par exemple :

```sql theme={null}
SET ROLE accountant;
SELECT * FROM db.*;
```
