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

Gestion des utilisateurs MySQL

MySQL est l'un des gestionnaires de bases de données les plus populaires au monde. Il contient de nombreuses fonctionnalités qui le rendent fiable, efficace et robuste. Sa fiabilité maximale est atteinte s'il est correctement utilisé. La création d'utilisateurs avec des autorisations limitées sur la base de données est l'un des moyens les plus simples et les plus fiables d'augmenter la sécurité de MySQL.

MySQL crée un utilisateur

Lors de l'installation de MySQL, l'utilisateur root (administrateur MySQL) est le premier utilisateur à être créé. L'utilisateur root est autorisé à faire tout et n'importe quoi sur la base de données MySQL. Il est pratique pour d'autres personnes d'accéder à votre base de données à l'aide de ce compte.

Des utilisateurs malveillants peuvent essayer de se connecter en tant qu'utilisateurs root pour voler les informations hébergées ou détruire le service avec les données. Par conséquent, l'administrateur système doit créer des utilisateurs avec des autorisations spécifiques sur la base de données. Cela garantit que si la sécurité de cet utilisateur est compromise, l'impact est minime ou gérable.

L'instruction MySQL Create User vous permet de créer un nouveau compte utilisateur dans le serveur de base de données. Il fournit des propriétés de gestion de l'authentification, de la limite des ressources, des rôles et des mots de passe pour les nouveaux comptes. La déclaration nous permet également de contrôler les comptes qui doivent être verrouillés ou déverrouillés.

Pour créer un utilisateur, il est nécessaire d'avoir un privilège global (être un utilisateur root) de la déclaration "CREATE USER" ou le privilège INSERT pour le schéma du système MySQL. Une erreur apparaît si vous essayez de créer un utilisateur qui existe déjà mais si vous utilisez la clause "IF NOT EXISTS", l'instruction donne un avertissement pour chaque utilisateur nommé qui existe déjà au lieu d'un message d'erreur.

Pour créer un utilisateur non root et lui accorder des privilèges spécifiques pour accéder et modifier la base de données, nous utilisons la syntaxe suivante :

CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';

Le account_name a deux parties; le nom d'utilisateur et le nom d'hôte, séparés par le symbole @. Le nom d'utilisateur est le nom de l'utilisateur, tandis que le nom d'hôte est le nom de l'hôte à partir duquel l'utilisateur peut se connecter au serveur de base de données.

username@hostname

Le nom d'hôte est facultatif. Si le nom d'hôte n'est pas donné, l'utilisateur peut se connecter à partir de n'importe quel hôte sur le serveur. Un nom de compte utilisateur sans nom d'hôte peut être écrit comme nom d'utilisateur@%

CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';

Notez que l'instruction create user crée un nouvel utilisateur avec un accès complet. pour donner des privilèges à l'utilisateur, utilisez l'instruction GRANT

Utilisez les étapes suivantes pour créer un nouvel utilisateur dans la base de données MySQL :

1. En utilisant l'outil client MySQL, ouvrez le serveur MySQL

2. Saisissez le mot de passe, puis appuyez sur Entrée.

3. Créez un nouvel utilisateur à l'aide de la commande suivante

create user 'foss'@'localhost' identified by 'foss12345'; 

4. Utilisez la commande suivante pour afficher les utilisateurs dans le serveur MySQL

select user from mysql.user;

À partir de la sortie affichée, l'utilisateur "foss" a été créé avec succès.

5. Utilisez maintenant la clause IF NOT EXISTS avec l'instruction CREATE USER en exécutant la commande suivante :

Accorder des privilèges au nouvel utilisateur MySQL

Certains des privilèges les plus courants fournis par le serveur MySQL à un nouvel utilisateur incluent ;

1. TOUS LES PRIVILÈGES : accorde tous les privilèges à un nouveau compte utilisateur

2. CRÉER : permet au compte utilisateur de créer des bases de données et des tables

3. DÉPOSER : permet au compte utilisateur de supprimer des bases de données et des tables

4. SUPPRIMER : permet au compte utilisateur de supprimer des lignes d'une table spécifique

5. INSÉRER : permet au compte utilisateur d'insérer des lignes dans une table spécifique

6. SÉLECTIONNER : permet au compte utilisateur de lire une base de données

7. MISE À JOUR : permet à un compte utilisateur de mettre à jour les lignes du tableau

Exécutez la commande suivante pour accorder tous les privilèges à un utilisateur

GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';

Exécutez la commande suivante pour donner des privilèges spécifiques à un utilisateur nouvellement créé,

GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';

Pour vider tous les privilèges attribués à un utilisateur, exécutez la commande ci-dessous.

FLUSH PRIVILEGES;

Pour voir les privilèges existants attribués à un utilisateur, exécutez la commande suivante.

SHOW GRANTS FOR 'foss'@'localhost';

Déposer un utilisateur MySQL

L'instruction MySQL Drop User vous permet de supprimer un ou plusieurs comptes d'utilisateurs et leurs privilèges du serveur de base de données. Si le compte utilisateur n'existe pas sur le serveur de base de données, il renverra une erreur.

Pour utiliser l'instruction Drop User, vous devez disposer d'un privilège global ou du privilège DELETE pour le schéma du système MySQL.

La syntaxe de suppression complète des comptes d'utilisateurs du serveur de base de données est la suivante :

DROP USER 'foss'@'localhost';

Remarque : Le nom de compte dans l'exemple ci-dessus est identifié comme nom d'utilisateur@nom d'hôte. Le nom d'utilisateur est le nom du compte que vous souhaitez supprimer du serveur de base de données et le nom d'hôte est le nom du serveur du compte d'utilisateur. par exemple, "foss@localhost". foss est le nom d'utilisateur, tandis que localhost est le nom d'hôte.

Voici les étapes à suivre lors de la suppression d'un utilisateur existant de la base de données du serveur MySQL ;

1. En utilisant l'outil client MySQL, ouvrez le serveur MySQL

2. Tapez le mot de passe du compte, puis appuyez sur Entrée

3. Pour supprimer un compte utilisateur, exécutez la commande suivante

DROP USER 'fosslinux'@'localhost';

4. Exécutez la commande suivante pour afficher les utilisateurs

select user from mysql.user; 

Vous obtiendrez une sortie dans laquelle le nom d'utilisateur fosslinux ne sera pas présent, comme indiqué ci-dessous :

5. L'utilisateur Drop peut également être utilisé pour supprimer plusieurs comptes d'utilisateurs à la fois. Pour ce faire, vous séparez les noms_comptes par des virgules.

Remarque : Puisque nous avions déjà supprimé les utilisateurs, nous allons créer deux utilisateurs en utilisant les concepts de création d'utilisateurs (fosslinuxtuts et fosslinux@%). Après cela, nous exécuterons la commande à l'étape 4 pour afficher les utilisateurs existants comme indiqué ci-dessous :

Supprimez maintenant les deux utilisateurs simultanément à l'aide de la commande ci-dessous :Exécutez la commande suivante pour supprimer les deux utilisateurs :

DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;

Notez que l'instruction DROP ne peut pas fermer automatiquement les sessions utilisateur ouvertes. Lorsque l'instruction DROP est exécutée alors qu'une session de compte d'utilisateur est active, la commande ne l'affecte pas tant que sa session n'est pas fermée. Le compte utilisateur est supprimé uniquement lorsque la session est fermée, et la prochaine tentative de l'utilisateur ne pourra plus se reconnecter.

MySQL affiche les utilisateurs/liste tous les utilisateurs

Pour gérer une base de données dans MySQL, vous devez voir la liste de tous les comptes d'utilisateurs dans une base de données. Les gens supposent qu'il existe une commande SHOW USERS similaire à SHOW DATABASE ou SHOW TABLES pour afficher la liste de tous les utilisateurs disponibles dans le serveur de base de données. Malheureusement, le serveur MySQL n'a pas de commande SHOW USERS pour afficher une liste de tous les utilisateurs du serveur MySQL. Donc, à la place, nous utilisons la requête suivante pour voir la liste de tous les utilisateurs du serveur de base de données :

Select user from mysql.user;

Après avoir exécuté la commande, vous obtiendrez les données utilisateur de la table utilisateur du serveur de base de données MySQL.

Remarque : Dans cet exemple, nous utiliserons la base de données MySQL. Sélectionnez la base de données en exécutant la commande ci-dessous, puis utilisez l'instruction select from pour vérifier les utilisateurs existants, comme indiqué dans l'image ci-dessous :

use mysql;
SELECT user FROM user;

Si vous souhaitez voir plus d'informations sur la table des utilisateurs, exécutez la commande suivante :

DESC user;

La commande donnera la sortie suivante qui répertorie toutes les colonnes disponibles de la base de données mysql.user :

Pour obtenir des informations sélectionnées telles que le nom d'hôte, l'état d'expiration du mot de passe et le verrouillage du compte, exécutez la requête suivante :

 SELECT user, host, account_locked, password_expired FROM user;

La sortie suivante apparaîtra après l'exécution réussie de la requête :

Afficher l'utilisateur actuel

Vous pouvez obtenir des informations sur l'utilisateur actuel en utilisant la fonction user() ou current_user() comme indiqué ci-dessous :

Select user(); 

OU

Select current_user();

La sortie suivante apparaîtra après avoir exécuté avec succès l'une des commandes ci-dessus.

Afficher l'utilisateur actuellement connecté

Vous pouvez voir un utilisateur actuellement connecté au serveur de base de données en utilisant la commande suivante sur le serveur MySQL :

SELECT user, host, db, command FROM information_schema.processlist;

Les commandes ci-dessus génèrent un écran similaire à celui illustré ci-dessous :

Comment changer le mot de passe de l'utilisateur MySQL

Les enregistrements d'utilisateur MySQL contiennent les informations de connexion, les privilèges de compte et les informations d'hôte permettant au compte MySQL d'accéder à la base de données et de la gérer. Les informations de connexion comprennent le nom d'utilisateur et le mot de passe. Par conséquent, il peut être nécessaire de modifier le mot de passe utilisateur dans la base de données MySQL.

Pour modifier le mot de passe d'un compte utilisateur, n'oubliez pas de garder à l'esprit les informations suivantes :

  • Détails du compte utilisateur à modifier
  • L'application est utilisée par le compte utilisateur dont le mot de passe doit être modifié. Si le mot de passe du compte utilisateur a été réinitialisé sans modifier une chaîne de connexion d'application, l'application ne peut pas se connecter au serveur de base de données.

MySQL vous permet de modifier le mot de passe du compte utilisateur de trois manières différentes :

  1. Instruction de mise à jour
  2. Instruction SET PASSWORD
  3. Instruction ALTER USER

Modification du mot de passe du compte utilisateur à l'aide de l'instruction UPDATE

Après avoir exécuté l'instruction UPDATE, nous utilisons l'instruction FLUSH PRIVILEGE pour recharger les privilèges à partir de la table des droits de la base de données MySQL.
Supposons que vous souhaitiez modifier le mot de passe d'un compte utilisateur foss qui se connecte depuis l'hôte local avec le mot de passe foss12345, exécutez la commande suivante :

USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss'; 
FLUSH PRIVILEGES;

La déclaration ci-dessus ne fonctionnera pas sur MySQL version 5.7.6 ou supérieure car la table utilisateur MySQL contient la colonne de chaîne d'authentification qui stocke uniquement le mot de passe. Les versions supérieures ont la colonne de chaîne d'authentification dans l'instruction UPDATE, comme indiqué dans l'instruction suivante :

USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';

FLUSH PRIVILEGES;

Remarque : Cette méthode ne fonctionne qu'avec les anciennes versions de MySQL. Par conséquent, si vous avez des versions plus récentes ou plus récentes de MySQL, passez aux autres méthodes.

Modification du mot de passe du compte utilisateur à l'aide de l'instruction SET PASSWORD

Si vous souhaitez modifier le mot de passe d'un autre compte, vous devez disposer du privilège UPDATE. L'instruction utilise le compte utilisateur au format suivant :nom d'utilisateur@localhost

Il n'est pas nécessaire d'utiliser les privilèges de rechargement à partir des tables rant de la base de données MySQL à l'aide de FLUSH PRIVILEGES. Pour modifier le mot de passe du compte utilisateur (foss) à l'aide de l'instruction SET PASSWORD, utilisez l'instruction suivante :

SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');

Si vous utilisez MySQL version 5.7.6 ou supérieure, la déclaration ci-dessus est obsolète et ne fonctionnera pas dans les versions futures. À la place, utilisez la déclaration suivante :

SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';

Modification du mot de passe du compte utilisateur à l'aide de l'instruction ALTER USER

MySQL utilise l'instruction ALTER USER avec la clause IDENTIFIED BY. Pour ce faire, vous utilisez la syntaxe suivante :

ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';

Vous devrez peut-être réinitialiser le mot de passe du compte root MySQL. Pour ce faire, vous pouvez forcer l'arrêt puis redémarrer le serveur de base de données MySQL sans utiliser la validation de table de droits.

Conclusion

Cet article a couvert de manière exhaustive tous les aspects concernant la gestion des utilisateurs de MySQL. Nous pensons qu'il est suffisamment détaillé pour vous fournir des solutions à vos problèmes. Si vous rencontrez des erreurs ou des difficultés lors de l'affichage des utilisateurs utilisant MySQL, veuillez contacter via la section des commentaires pour obtenir de l'aide. Merci d'avoir lu.