# MariaDB GRANT ALL PRIVILEGES : voici comment attribuer des droits

Dans MariaDB, la commande `GRANT ALL PRIVILEGES` accorde tous les droits utilisateurs sur une base de données. Ainsi, les utilisateurs peuvent créer, modifier et supprimer des tables sans restrictions.

## Qu’est-ce que MariaDB `GRANT ALL PRIVILEGES` ?

La commande `GRANT ALL PRIVILEGES` dans [MariaDB](https://www.ionos.fr/digitalguide/serveur/know-how/mariadb-cest-quoi/) confère à un utilisateur des droits d’accès complets sur une ou plusieurs bases de données. Elle accorde **toutes les permissions disponibles**, y compris la création, la modification et la suppression de tables ainsi que l’accès aux fonctions administratives. Avec l’utilisation ciblée de `GRANT ALL PRIVILEGES`, vous contrôlez les droits d’accès au sein de votre environnement de base de données.

Pour appliquer `GRANT ALL PRIVILEGES`, vous avez besoin de **droits système avancés**. Cela inclut généralement le privilège `SUPER` ou l’autorisation d’accorder des droits (`GRANT OPTION`). Connectez-vous avec un compte administrateur et assurez-vous d’avoir une connexion stable à la bonne instance de base de données. Assurez-vous de définir précisément le nom d’utilisateur et le préfixe d’hôte afin d’éviter des attribuements de droits involontaires. Vérifiez également si la base de données cible existe déjà, car la commande ne peut s’appliquer qu’aux bases de données existantes.

## Syntaxe de la commande MariaDB `GRANT ALL PRIVILEGES`

La structure de base pour accorder tous les droits sur une base de données dans MariaDB est la suivante :

```sql
GRANT ALL PRIVILEGES ON database.table* TO 'username'@'host';
```

Dans MariaDB, l’expression `GRANT ALL PRIVILEGES` accorde à l’utilisateur spécifié des permissions complètes sur la base de données sélectionnée. En spécifiant `'username'@host`, vous déterminez à quel utilisateur et depuis quel hôte l’accès est autorisé. Vous pouvez également définir un mot de passe pour authentifier l’utilisateur, bien que cette étape soit facultative.

Une fois la commande exécutée, les modifications ne prennent effet qu’après rechargement des permissions :

```sql
FLUSH PRIVILEGES;
```

Cela garantit que les droits accordés sont immédiatement actifs et correctement enregistrés dans le système.

## Guide étape par étape : créer un utilisateur et lui attribuer des droits

Si vous souhaitez créer un nouveau compte utilisateur dans MariaDB et lui accorder des droits complets, procédez de la manière suivante :

### Étape 1 : créer un utilisateur

Tout d’abord, créez un nouvel utilisateur avec un mot de passe sécurisé. Utilisez pour cela la commande suivante :

```sql
CREATE USER 'newuser'@localhost IDENTIFIED BY 'strongpassword';
```

Avec la commande [MariaDB CREATE USER](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/mariadb-create-user/), vous créez un nouvel utilisateur et lui attribuez un mot de passe. Remplacez `newuser` par le nom d’utilisateur souhaité et `strongpassword` par un mot de passe sécurisé personnalisé. La mention `localhost` limite l’accès aux connexions à partir du serveur local. Si vous souhaitez autoriser l’accès depuis un autre hôte, remplacez `localhost` par l’**adresse IP ou le nom d’hôte** du serveur souhaité.

### Étape 2 : accorder tous les droits sur une base de données

MariaDB `GRANT ALL PRIVILEGES` accorde à l’utilisateur tous les privilèges disponibles sur toutes les tables de la base de données `database_name`. Le caractère `*` représente chaque table au sein de la base de données spécifiée.

```sql
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@localhost;
```

### Étape 3 : autoriser la délégation de droits (`GRANT OPTION`)

En ajoutant `WITH GRANT OPTION`, l’utilisateur obtient le droit de transmettre les privilèges reçus à d’autres utilisateurs.

```sql
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@localhost WITH GRANT OPTION;
```

### Étape 4 : accorder des droits individuels sur une base de données ou une table

Vous pouvez également attribuer des autorisations spécifiques à une base de données entière ou à des tables individuelles. Par exemple, pour n’autoriser que l’accès en lecture à toutes les tables d’une base de données, utilisez :

```sql
GRANT SELECT ON database_name.* TO 'newuser'@localhost;
```

Dans cet exemple, `'newuser'` obtient le droit de lire toutes les données dans la base de données `database_name`, sans pouvoir effectuer de modifications. L’utilisation de `*` après le nom de la base de données signifie que les droits s’appliquent à toutes les tables de cette base de données.

Si vous souhaitez octroyer des droits uniquement sur une table spécifique, ajustez la syntaxe de la manière suivante :

```sql
GRANT SELECT ON database_name.table_name TO 'newuser'@localhost;
```

Ainsi, `'newuser'` peut lire les données de la table `table_name` au sein de la base de données `database_name`. Cela vous permet de contrôler très précisément quelles actions l’utilisateur peut effectuer.

### Étape 5 : appliquer les modifications

Les droits devraient être mis à jour automatiquement et prendre effet immédiatement. Vous pouvez aussi exécuter la commande suivante pour vous assurer que tous les droits attribués deviennent effectifs :

```sql
FLUSH PRIVILEGES;
```

### Étape 6 : afficher les droits attribués

Pour vérifier tous les droits actuellement attribués à un compte utilisateur, entrez la commande suivante :

```sql
SHOW GRANTS FOR 'newuser'@localhost;
```

Cette commande liste toutes les permissions dont `newuser` dispose pour l’instance MariaDB. Vous verrez non seulement les droits généraux sur les bases de données ou tables, mais aussi des privilèges spécifiques comme le droit de transmettre ses propres autorisations (`WITH GRANT OPTION`).


This is a markdown version of: [https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/mariadb-grant-all-privileges/](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/mariadb-grant-all-privileges/) for AI/LLM consumption.