GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Modifier la méthode d'authentification pour l'utilisateur racine MySQL dans Ubuntu

Ce guide explique pourquoi et comment changer la méthode d'authentification pour l'utilisateur racine MySQL en Caching SHA-2 Pluggable Authentication ou Authentification enfichable native méthode dans Ubuntu.

Présentation

Même si vous avez un mot de passe de configuration pour la racine MySQL user, vous ne pouvez toujours pas vous authentifier auprès du serveur de base de données en tant que root utilisateur avec un mot de passe. Parce que l'utilisateur racine MySQL est configuré pour s'authentifier à l'aide du auth_socket plugin par défaut au lieu du mot de passe dans les systèmes Ubuntu exécutant MySQL 5.7 et les versions plus récentes. Par conséquent, vous ne pouvez pas accéder au serveur MySQL avec l'utilisateur root et son mot de passe.

Même si vous essayez de vous authentifier en tant qu'utilisateur root à l'aide de la commande :

$ mysql -u root -p

Vous obtiendrez le message d'erreur suivant :

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Le auth_socket plugin vérifie si le nom d'utilisateur du socket (le nom d'utilisateur du système d'exploitation) correspond au nom d'utilisateur MySQL spécifié par le programme client au serveur.

Ce plugin ne se soucie pas et n'a pas besoin d'un mot de passe. Il vérifie simplement si l'utilisateur se connecte à l'aide d'un socket UNIX, puis compare le nom d'utilisateur.

Si le plug-in constate que le nom d'utilisateur du système d'exploitation et le nom d'utilisateur MySQL sont identiques, il autorise la connexion sans autre authentification.

Par exemple, s'il existe un utilisateur appelé ostechnix sur le système d'exploitation, il pourra se connecter au 'ostechnix'@'localhost' compte dans MySQL si l'authentification par socket Unix est le mécanisme d'authentification défini. Si le nom d'utilisateur du système d'exploitation diffère du nom d'utilisateur MySQL, le auth_socket plugin refuse simplement la connexion.

Le auth_socket plugin améliore la sécurité, mais complique également les choses lorsque nous utilisons des programmes externes comme phpMyAdmin pour accéder au serveur de base de données.

Aussi, les utilisateurs authentifiés par le auth_socket Le plugin ne peut se connecter qu'à partir de l'hôte local via le fichier de socket Unix. Il leur est interdit de se connecter à distance. C'est pourquoi nous devons changer la méthode d'authentification pour l'utilisateur racine MySQL dans Ubuntu.

1. Modifier la méthode d'authentification pour l'utilisateur racine MySQL dans Ubuntu

MySQL fournit de nombreuses méthodes d'authentification et les plugins qui implémentent ces méthodes. Dans ce guide, nous ne discutons que de deux plugins appelés caching_sha2_password et mysql_native_password qui implémente les méthodes appelées Caching SHA-2 Pluggable Authentication et authentification enfichable native respectivement.

Tout d'abord, nous verrons comment changer la méthode d'authentification pour l'utilisateur root de MySQL en caching_sha2_password .

1.1. Remplacez le plugin d'authentification par caching_sha2_password

Le caching_sha2_password Le plugin effectue l'authentification à l'aide du hachage de mot de passe SHA-256. Dans MySQL 8.0, caching_sha2_password est le plugin d'authentification par défaut plutôt que mysql_native_password . Il fournit un cryptage de mot de passe plus sécurisé, une authentification plus rapide et de meilleures performances.

Pour changer le plugin d'authentification, connectez-vous au serveur MySQL à l'aide de la commande :

$ sudo mysql

Étant donné que MySQL 8 utilise auth_socket plugin dans Ubuntu, la commande ci-dessus vous permettra de vous connecter au serveur MySQL en tant que root utilisateur. Entrez votre sudo mot de passe pour s'authentifier.

Ensuite, recherchez la méthode d'authentification actuelle pour tous les comptes d'utilisateurs mysql en exécutant la commande suivante à l'invite MySQL :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Exemple de résultat :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | user             | authentication_string                                                  | plugin                | host      |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2
                                             yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost |
 | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | root             |                                                                        | auth_socket           | localhost |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 5 rows in set (0.01 sec)

Comme vous pouvez le voir, l'utilisateur root de MySQL utilise auth_socket plugin pour l'authentification. Changeons le auth_socket plugin à caching_sha2_password plugin en utilisant ALTER USER commande comme ci-dessous.

Veuillez noter que si vous avez activé VALIDATE PASSWORD plugin lors de la définition du mot de passe de l'utilisateur root MySQL, vous devez entrer un mot de passe fort basé sur la politique de mot de passe actuelle. Un mot de passe fort doit être composé d'au moins 8 caractères dont une lettre majuscule, une lettre minuscule, un chiffre et un caractère spécial.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

Remplacez Password123#@! dans la commande ci-dessus avec un mot de passe fort et unique de votre choix et notez-le car nous en aurons besoin plus tard.

Ensuite, mettez à jour les modifications à l'aide de la commande :

mysql> FLUSH PRIVILEGES;

Vérifiez maintenant si le plugin d'authentification actuel est modifié ou non à l'aide de la commande :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Exemple de résultat :

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | user             | authentication_string                                                  | plugin                | host      |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2
                                             yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost |
 | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | root             | $A$005$z9Lq/%(r l
 +DDI9wJbql8DWZNRoet2BSwUrIgjq.l7FxRSyMb/OWk4 | caching_sha2_password | localhost |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 5 rows in set (0.00 sec)

La méthode d'authentification pour l'utilisateur racine MySQL a été définie sur Caching SHA-2 Pluggable Authentication. Désormais, l'utilisateur root de MySQL peut s'authentifier à l'aide d'un mot de passe.

Sortez de l'invite mysql :

mysql> exit

Pour vérifier si l'utilisateur racine MySQL peut se connecter avec un mot de passe, entrez la commande suivante :

$ mysql -u root -p

Saisissez le mot de passe de l'utilisateur racine MySQL :

 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 11
 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

 Copyright (c) 2000, 2021, Oracle and/or its affiliates.

 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 mysql> 

Même si caching_sha2_password Le plugin fournit un cryptage sécurisé amélioré et de meilleures performances, il présente des problèmes de compatibilité avec les installations MySQL existantes et pose des problèmes avec certaines versions de PHP. Pour plus de détails, consultez ce lien .

Si vous avez rencontré des problèmes de compatibilité ou si le client ou le connecteur ne prend pas en charge caching_sha2_password plugin d'authentification, revenez à la méthode d'authentification native, c'est-à-dire mysql_native_password comme décrit dans la section suivante.

1.2. Remplacez le plugin d'authentification par mysql_native_password

MySQL inclut un mysql_native_password plugin qui implémente la méthode d'authentification enfichable native. Il fournit une authentification basée sur la méthode de hachage du mot de passe.

Le mysql_native_password était la méthode d'authentification par défaut dans les anciennes versions de MySQL.

Pour passer à mysql_native_password plugin, connectez-vous à MySQL en tant que root utilisateur :

$ mysql -u root -p

Si vous utilisez auth_socket plugin, vous devez entrer la commande suivante pour vous connecter au serveur MySQL en tant que root utilisateur :

$ sudo mysql

Pour définir mysql_native_password plugin comme authentification par défaut pour l'utilisateur racine MySQL, exécutez la commande suivante à l'invite MySQL.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';

Mettez à jour les modifications à l'aide de la commande :

mysql> FLUSH PRIVILEGES;

Vérifiez maintenant si la méthode d'authentification est modifiée ou non à l'aide de la commande :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Exemple de résultat :

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | user             | authentication_string                                                  | plugin                | host      |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2
                                             yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost |
 | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | root             | *B6032809F2C8CE37BDF05DEFE5BA30D6DC74DC68                              | mysql_native_password | localhost |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 5 rows in set (0.00 sec)

Fait! Nous avons changé la méthode d'authentification pour l'utilisateur racine MySQL en authentification native enfichable.

Conclusion

Dans ce guide, nous avons examiné pourquoi nous devons modifier la méthode d'authentification pour l'utilisateur racine MySQL dans les systèmes Ubuntu exécutant MySQL 5.7 et les versions plus récentes. Nous avons également vu comment changer auth_socket plugin à caching_sha2_password ou mysql_native_password plugin pour l'utilisateur racine MySQL dans le système d'exploitation Ubuntu.

Lire connexe :

  • Comment réinitialiser le mot de passe root dans MySQL 8 sur Ubuntu Linux

Ubuntu
  1. Comment changer le mot de passe Sudo ou Root dans Ubuntu

  2. Devenez un utilisateur root dans Ubuntu 22.04 - Guide étape par étape ?

  3. Comment installer MySQL sur Ubuntu 18.04 LTS

  4. Modifier le chemin des dossiers utilisateur par défaut ?

  5. shell différent pour les utilisateurs root et non root

Comment changer le mot de passe utilisateur dans Ubuntu [Tutoriel du débutant]

Un moyen facile d'installer MySQL sur Ubuntu Linux

Comment ouvrir le gestionnaire de fichiers Ubuntu en tant qu'utilisateur root

Comment changer le mot de passe root dans Ubuntu

Comment changer le mot de passe racine dans Ubuntu Linux

Comment se connecter en tant que root dans Mysql ?