Maison > Opération et maintenance > exploitation et maintenance Linux > Comment résoudre le problème de l'oubli du mot de passe MySQL sous Linux

Comment résoudre le problème de l'oubli du mot de passe MySQL sous Linux

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2022-01-18 15:40:37
original
21954 Les gens l'ont consulté

Solution : 1. Utilisez la commande « service mysql stop » pour arrêter le service mysql ; 2. Modifiez le fichier de configuration mysql « my.conf » 3. Utilisez la commande « service mysqld start » pour redémarrer la base de données ; . Utilisez l'instruction "use mysql" pour changer le mot de passe.

Comment résoudre le problème de l'oubli du mot de passe MySQL sous Linux

L'environnement d'exploitation de ce tutoriel : système linux7.3, version mysql8.0.22, ordinateur Dell G3.

Comment résoudre le problème de l'oubli du mot de passe mysql sous Linux

Solution :

1 Vérifiez si le service mysql est démarré. S'il est démarré, fermez le service mysql

//查看mysql服务状态
[root@mytestlnx02 ~]# ps -ef | grep -i mysql
root     22972     1  0 14:18 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql    23166 22972  0 14:18 pts/0    00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root     23237 21825  0 14:22 pts/0    00:00:00 grep -i mysql
//关闭服务
[root@mytestlnx02 ~]# service mysql stop
[root@mytestlnx02 ~]#
Copier après la connexion

2. Modifiez le fichier de configuration mysql my.cnf

L'emplacement du fichier de configuration my.cnf est généralement dans /etc/my.cnf Certaines versions sont dans /etc/mysql/my.cnf

Dans le fichier de configuration, ajoutez. 2 lignes de code

[mysqld]
skip-grant-tables
Copier après la connexion

Comment résoudre le problème de loubli du mot de passe MySQL sous Linux

La fonction est Ignorer la vérification du mot de passe lors de la connexion à mysql

Ensuite, démarrez le service mysql et entrez mysql

[root@mytestlnx02 ~]# service mysqld start
[root@mytestlnx02 ~]#
[root@mytestlnx02 ~]# mysql -u root 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Copier après la connexion

3 Changez le mot de passe

Connectez-vous à la base de données mysql et changez. le mot de passe utilisateur

mysql> 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
mysql> update mysql.user set authentication_string=password('root_password') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit
Copier après la connexion

4. Redémarrez le service mysql

commentez d'abord ou supprimez les deux lignes de code précédemment ajoutées au fichier de configuration, puis redémarrez le service mysql, et vous pourrez vous connecter en utilisant le mot de passe que vous venez de définir.

[root@mytestlnx02 ~]# service mysql start
[root@mytestlnx02 ~]#
[root@mytestlnx02 ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Copier après la connexion

fonctionne différemment sur CentOS.

L'exécution de la commande pour changer le mot de passe continue de signaler des erreurs

mysql> update user set authentication_string=password('xxxxxxxx') where User='root';       
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('root_password') where User='root'' at line 1
Copier après la connexion

Cela ne peut pas être un problème de syntaxe. Je l'ai vérifié plusieurs fois et j'ai finalement trouvé que cela devait être fait comme ceci sous CentOS :

Voir l'initiale. mot de passe

[root@VM_0_8_centos ~]# grep 'temporary password' /var/log/mysqld.log
2018-09-26T04:25:54.927944Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: DN34N/=?aIfZ
Copier après la connexion

Vous pouvez voir que le mot de passe initial est DN34N /?aIfZ

Utilisez le mot de passe initial pour vous connecter

[root@VM_0_8_centos ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.12 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Copier après la connexion

Changez le mot de passe

mysql> ALTER USER 'root' IDENTIFIED BY 'xxxxxxxxx';  
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxxxx';
Query OK, 0 rows affected (0.11 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
Copier après la connexion

Redémarrez le service et il prendra effet

[root@VM_0_8_centos ~]# service mysqld stop 
Redirecting to /bin/systemctl stop  mysqld.service
[root@VM_0_8_centos ~]# service mysqld start
Redirecting to /bin/systemctl start  mysqld.service
Copier après la connexion

Recommandations associées : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal