From e1d2ab2afd69e55f33dfab29ab01373d24b6f89b Mon Sep 17 00:00:00 2001 From: whirigoyen Date: Wed, 31 Jan 2024 16:52:09 +0100 Subject: [PATCH] =?UTF-8?q?Distinction=20cr=C3=A9ation=20utilisateur=20/?= =?UTF-8?q?=20ajout=20de=20permissions=20dans=20la=20section=20TL;DR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoMySQL.md | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/HowtoMySQL.md b/HowtoMySQL.md index 04183e55..45bd1339 100644 --- a/HowtoMySQL.md +++ b/HowtoMySQL.md @@ -416,13 +416,13 @@ Changer dynamiquement la valeur d'une variable de configuration : **Attention :** -* Les permissions et mots de passe ne sont pas spécifiques à un utilisateur, mais à un triplet utilisateur/hôte/base. -* Par défaut, on utilisera l'hôte `localhost`. +* **Les permissions et mots de passe ne sont pas spécifiques à un utilisateur, mais à un couple utilisateur/hôte.** +* Par défaut, utiliser l'hôte `localhost`. Pour autoriser l'utilisateur à se connecter à partir de n'importe où, utiliser le wildcard `%`. **Lister** les utilisateurs : ~~~{.sql} -> SELECT host, user FROM mysql.user [WHERE db= ORDER BY user]; +> SELECT host, user, password FROM mysql.user [WHERE db= ORDER BY user]; ~~~ **Lister** les privilèges d’un utilisateur/hôte : @@ -431,17 +431,32 @@ Changer dynamiquement la valeur d'une variable de configuration : > SHOW GRANTS FOR @; ~~~ -**Ajouter** un accès utilisateur/hôte avec tous les droits sur une base : +**Créer** un utilisateur/hôte : ~~~{.sql} -# Si on connaît le mot de passe -> GRANT ALL PRIVILEGES ON .* TO @ IDENTIFIED BY ''; - -# En réutilisant le hash d'un mot de passe non connu (obtenu plus haut avec SHOW GRANTS) -> GRANT ALL PRIVILEGES ON .* TO @ IDENTIFIED BY PASSWORD ''; +CREATE USER @ IDENTIFIED BY ''; ~~~ -**Note :** si on veut créer un utilisateur et une base du même nom, on préfèrera la commande shell `mysqladmin create `. +**Note :** si on veut créer un utilisateur et une base du même nom, on préférera la commande shell `mysqladmin create `. + +Pour autoriser un utilisateur existant à se connecter à partir d'un autre hôte (ou de `%`), réutiliser le hash de son mot de passe : + +~~~{.sql} +> SELECT host, user, password FROM mysql.user WHERE user LIKE ''; +> CREATE USER @ IDENTIFIED BY PASSWORD ''; +~~~ + +Donner **tous les privilèges** sur une base à un utilisateur/hôte : + +~~~{.sql} +> GRANT ALL PRIVILEGES ON .* TO @; +~~~ + +Changer le **mot de passe** d'un utilisateur : + +~~~{.sql} +> SET PASSWORD FOR @ = PASSWORD(''); +~~~ **Révoquer** les accès d'un utilisateur/hôte à une base (attention un utilisateur peut avoir des permissions avec plusieurs hôtes !) :