GNU/Linux >> Tutoriels Linux >  >> Linux

Comment changer/réinitialiser le mot de passe racine MySQL ou MariaDB

Récemment, j'ai changé le mot de passe de l'utilisateur racine MySQL de mon site Web. Ensuite, j'ai pensé que se passerait-il si j'oubliais le mot de passe root MySQL ?

Existe-t-il un moyen simple de réinitialiser le mot de passe root MySQL ou MariaDB ?

J'ai parcouru quelques tutoriels en ligne, mais aucun d'entre eux ne semble être suffisamment complet pour faire la différence entre la modification du mot de passe et la réinitialisation du mot de passe. Ils semblaient manquer de détails sur la table MySQL où les mots de passe des utilisateurs sont stockés et dans quelles colonnes.

Dans ce tutoriel, nous allons apprendre les sujets suivants.

  1. Comment changer le mot de passe racine MySQL/MariaDB
  2. Comment réinitialiser le mot de passe racine MySQL/MariaDB

Je vais essayer de le rendre aussi complet que possible, et j'espère qu'après avoir lu ceci, vous vous en sortirez facilement sans avoir besoin d'aide supplémentaire.

Quelle est la différence entre changer et réinitialiser le mot de passe ?

Si vous connaissez le mot de passe root, vous pouvez vous connecter à la base de données en tant qu'utilisateur root, puis modifier le mot de passe très facilement. Vous pouvez modifier le mot de passe root ainsi que tout autre mot de passe utilisateur.

Si vous avez oublié le mot de passe root, cela signifie que vous ne pouvez pas vous connecter au serveur MySQL en tant qu'utilisateur root. L'utilisateur root a les privilèges les plus élevés et vous ne pouvez pas modifier son mot de passe via d'autres comptes. Nous devons effectuer quelques étapes supplémentaires dans ce cas pour réinitialiser le mot de passe root MySQL.

Les étapes pour MySQL et MariaDB sont les mêmes ?

MariaDB est construit sur MySQL. Il est très populaire pour les besoins d'hébergement Web. En fait, JournalDev et tous mes sites Web utilisent la base de données MariaDB. Toute commande qui fonctionne pour MySQL fonctionnera également pour MariaDB.

Le seul ajustement dans les commandes que vous pourriez avoir à faire est d'arrêter et de démarrer le serveur MySQL. J'utilise Ubuntu pour ce tutoriel et j'utilise systemctl pour démarrer/arrêter les services. Vous pouvez également utiliser /etc/init.d/mysql pour effectuer les mêmes opérations.

Si vous utilisez le système d'exploitation Windows, veuillez utiliser mysqld ou mysqladmin à partir de l'invite de commande pour démarrer ou arrêter le serveur MySQL. Ils se trouvent dans le dossier bin d'installation de MySQL.

Comment changer le mot de passe racine MySQL ou MariaDB

J'utilise la base de données MariaDB, nous pouvons utiliser l'option –version pour connaître sa version.

# mariadb --version
mariadb  Ver 15.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
# 

1. Connectez-vous à MySQL en tant qu'utilisateur root

# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> 

2. Modifiez le mot de passe et la valeur authentication_string dans la table mysql.user

Les mots de passe des utilisateurs MySQL sont stockés dans les colonnes password et authentication_string de la table mysql.user sous la forme chiffrée. Nous pouvons utiliser la fonction PASSWORD() pour convertir une chaîne de texte brut en valeur cryptée et définir ces colonnes.

MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost';
+-------------------------------------------+-------------------------------------------+
| password                                  | authentication_string                     |
+-------------------------------------------+-------------------------------------------+
| *E510A8BC6807F8BF4913D893620792C432FCBA5B | *E510A8BC6807F8BF4913D893620792C432FCBA5B |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost';
+-------------------------------------------+-------------------------------------------+
| password                                  | authentication_string                     |
+-------------------------------------------+-------------------------------------------+
| *6F168491676C70E51CB8D0F14D6B581D1322A77A | *6F168491676C70E51CB8D0F14D6B581D1322A77A |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit
Bye
root@localhost:~# 

Comprenons ce qui se passe dans les requêtes ci-dessus.

  • Tout d'abord, nous changeons la base de données en "mysql"
  • Ensuite, nous définissons les valeurs des colonnes "authentication_string" et "password" pour l'utilisateur "root"@'localhost" avec le nouveau mot de passe.
  • Ensuite, nous rechargeons les tables de droits à l'aide de la commande FLUSH PRIVILEGES.
  • Puis quittez la session MySQL. Le mot de passe root a été changé avec succès.

REMARQUE :J'ai essayé d'utiliser ALTER USER commande pour changer le mot de passe root, mais cela n'a pas fonctionné.

MariaDB [mysql]> ALTER USER root@localhost IDENTIFIED BY 'qwerty2022';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER root@localhost IDENTIFIED BY 'qwerty2022'' at line 1
MariaDB [mysql]>

3. Vérifiez la connexion de l'utilisateur root à l'aide du nouveau mot de passe

# mysql -uroot -pqwerty2021
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]>

C'est ça. Nous avons changé avec succès le mot de passe de l'utilisateur MySQL/MariaDB.

Comment réinitialiser le mot de passe racine MySQL/MariaDB

Si vous avez oublié le mot de passe root, nous devons effectuer une étape supplémentaire afin de pouvoir nous connecter au terminal MySQL sans fournir le mot de passe.

1. Arrêtez le serveur MySQL

# systemctl stop mysql

Vous pouvez également exécuter systemctl stop mariadb , l'effet sera le même.

2. Démarrage du serveur MySQL sans paramètre de vérification des autorisations

L'idée est de démarrer le serveur MySQL sans charger les informations des tables de droits, afin que nous puissions nous connecter en tant qu'utilisateur root sans fournir de mot de passe.

C'est un risque pour la sécurité d'exécuter un serveur MySQL comme celui-ci, donc cela doit être fait brièvement et fermé immédiatement après la réinitialisation du mot de passe root.

Nous pouvons démarrer le serveur MySQL en mode sans échec et passer –skip-grant-tables option pour ignorer le chargement des tables de droits qui stockent les paramètres de privilèges de l'utilisateur.

# sudo mysqld_safe --skip-grant-tables --skip-networking &
[1] 11734
root@localhost:~# 200427 20:05:40 mysqld_safe Logging to syslog.
200427 20:05:40 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
#

Il est important d'exécuter la commande se terminant par &afin qu'elle s'exécute en arrière-plan. Je passe également –skip-networking option pour ignorer la mise en réseau qui empêche les autres clients de se connecter au serveur MySQL.

3. Connectez-vous au serveur MySQL en tant que root sans passer de mot de passe

# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> 

Notez que nous ne fournissons pas de mot de passe root, mais nous pouvons toujours nous connecter au serveur MySQL.

4. Réinitialisez le mot de passe root dans la table mysql.user

MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit
Bye
# 

5. Arrêter et démarrer le serveur MySQL

Tout d'abord, nous allons tuer le serveur MySQL en cours d'exécution. Le PID est présent dans le /var/run/mysqld/mysqld.pid fichier.

# cat /var/run/mysqld/mysqld.pid
11891
# sudo kill 11891
# 

Maintenant, démarrez le serveur MySQL en mode normal.

# systemctl start mysql

6. Vérifiez en vous connectant en tant qu'utilisateur root avec un nouveau mot de passe

# mysql -uroot -pqwerty2022
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> 

Si vous essayez de vous connecter en tant que root sans mot de passe, l'erreur "Accès refusé" s'affichera.

# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# 

Conclusion

L'utilisateur racine de MySQL est comme n'importe quel autre utilisateur. Cependant, changer ou réinitialiser son mot de passe est un peu délicat car c'est le super utilisateur et nous ne pouvons pas changer le mot de passe root à partir d'une autre connexion utilisateur.


Linux
  1. Comment réinitialiser votre mot de passe racine MySQL sur CentOS 6

  2. Comment réinitialiser le mot de passe root MySql

  3. Comment réinitialiser le mot de passe racine du serveur MySQL

  4. Comment changer le mot de passe root ?

  5. Comment réinitialiser le mot de passe root MySQL ?

Comment réinitialiser le mot de passe de l'utilisateur racine MySQL sous Linux

Comment modifier ou réinitialiser le mot de passe racine oublié dans RHEL 8

Comment réinitialiser le mot de passe root MySQL

Comment changer le mot de passe root sous Linux

Comment réinitialiser le mot de passe root MySQL 8.0 sur Centos 7.x ?

Comment réinitialiser le mot de passe racine dans CentOS/RHEL 8