Maison > base de données > tutoriel mysql > le corps du texte

Explication détaillée du problème du mot de passe MySQL oublié et de l'erreur de connexion

黄舟
Libérer: 2017-03-27 13:26:20
original
1251 Les gens l'ont consulté

L'éditeur ci-dessous vous apportera une brève discussion sur mysqlle problème des mots de passe oubliés et des erreurs de connexion. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un oeil.

Mot de passe de connexion mysql oublié ? En fait, la solution est très simple Il vous suffit d'ajouter un "saut" de ligne au fichier de configuration principal . de mysqlmy.cnf. Sélectionnez simplement les paramètres du "Formulaire d'autorisation" !

Ajoutez la ligne suivante dans my.cnf :

[root@test-huanqiu ~]# vim /etc/my.cnf            
  //在[mysqld]区域里添加
........
skip-grant-tables 
                     
 //跳过授权表
Copier après la connexion

Puis redémarrez le service mysql, et rien se produira Connexion par mot de passe

[root@test-huanqiu ~]# /etc/init.d/mysqld restart
Copier après la connexion

Réinitialiser le mot de passe après la connexion

[root@test-huanqiu ~]# mysql 
mysql> select host,user,password from mysql.user;
+--------------------+------+-------------------------------------------+
| host | user | password |
+--------------------+------+-------------------------------------------+
| localhost | root | *481ACA1BD6D1E86221244904E9C0FABA33B40B84 |
| host-192-168-1-117 | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| host-192-168-1-117 | | |
+--------------------+------+-------------------------------------------+
6 rows in set (0.00 sec)
mysql> update mysql.user set password=password("123456") where host="localhost" and user="root";
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> select host,user,password from mysql.user;
+--------------------+------+-------------------------------------------+
| host | user | password |
+--------------------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| host-192-168-1-117 | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| host-192-168-1-117 | | |
+--------------------+------+-------------------------------------------+
6 rows in set (0.00 sec)
mysql>
Copier après la connexion

Commentez la ligne ajoutée à nouveau dans my.cnf, et puis redémarrez mysql

[root@test-huanqiu ~]# vim /etc/my.cnf........#skip-grant-tables
[root@test-huanqiu ~]# /etc/init.d/mysqld restart
[root@test-huanqiu ~]# mysql -p123456mysql>
Copier après la connexion

-------------------------------- - ------------------------------------------------- - ------------------------------------

Un écueil découvert :

Mysql était entièrement sauvegardé auparavant. Après l'avoir restauré, j'ai constaté que je ne pouvais pas me connecter avec le mot de passe précédent !
Utilisez la méthode ci-dessus pour vous connecter sans mot de passe, puis réinitialisez le mot de passe. Cependant, après avoir réinitialisé le mot de passe, vous ne pouvez toujours pas vous connecter.

Enfin, il a été constaté que le contenu de la table mysql.user avait été effacé !

mysql> select host,user,password from user;
Empty set (0.00 sec)
Copier après la connexion

Solution :

Insérer les données, puis réinitialiser le mot de passe

mysql> insert into user(host,user,password) values("localhost","root","123456");
Query OK, 1 row affected, 3 warnings (0.01 sec)

mysql> select host,user,password from user;
+-----------+------+----------+
| host | user | password |
+-----------+------+----------+
| localhost | root | 123456 |
+-----------+------+----------+
1 row in set (0.00 sec)

mysql> update mysql.user set password=password("123456") where host="localhost" and user="root";
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)
mysql> insert into user(host,user,password) values("127.0.0.1","root","123456");
Query OK, 1 row affected, 3 warnings (0.00 sec)

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | root | 123456 |
+-----------+------+-------------------------------------------+
2 rows in set (0.00 sec)

mysql> update mysql.user set password=password("123456") where user="root";
Query OK, 1 row affected (0.00 sec)
Rows matched: 2 Changed: 1 Warnings: 0

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------+-------------------------------------------+
Copier après la connexion

Ensuite, vous pourrez vous connecter normalement en utilisant le mot de passe réinitialisé !

--------------------------------------------- -------------------------------------------------- -----------------------

erreur de connexion mysql 1 :

[root@test-huanqiu ~]# mysql -p123456
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
[root@test-huanqiu ~]# ps -ef|grep mysql
root 28279 1 0 12:55 ? 00:00:00 /bin/sh /usr/local/mysql//bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid
mysql 29059 28279 0 12:55 ? 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql/data
 --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql/data/mysql-error.log --pid-file=/data/mysql/data/mysql.pid 
 --socket=/usr/local/mysql/var/mysql.sock --port=3306
root 30726 11268 0 12:58 pts/2 00:00:00 grep mysql
Copier après la connexion

On peut voir que le chemin actuel du fichier mysql.sock est /usr/local/mysql/var/mysql.sock,

Solution : Créer un lien logiciel

[root@test-huanqiu ~]# ll /usr/local/mysql/var/mysql.sock
rwxrwxrwx. 1 mysql mysql 0 Nov 29 12:55 /usr/local/mysql/var/mysql.sock
[root@test-huanqiu ~]# rm -f /var/lib/mysql/mysql.sock
[root@test-huanqiu ~]# ln -s /usr/local/mysql/var/mysql.sock /var/lib/mysql/mysql.sock
Copier après la connexion

De cette façon, tout va bien

[root@test-huanqiu ~]# mysql -p123456
mysql>
Copier après la connexion

--------------- -- ------------------------------------------------ -- ----------------------------------

Démarrer MySQL Erreur signalée :

Starting MySQL.... ERROR! The server quit without updating PID file (/data/mysql/data/mysql.pid).
Copier après la connexion

Solutions tentées :

(1) Problème d'autorisation

Il se peut que le fichier mysql.pid ne dispose pas d'autorisations d'écriture. Définissez les autorisations du répertoire d'installation de MySQL sur les autorisations de l'utilisateur de démarrage de MySQL. Par exemple, remplacez-le par mysql : autorisations mysql

(2) Le processus Mysql existe peut-être déjà dans le processus

ps -ef|grep mysql pour savoir s'il existe est un processus MySQL. Tuez-le simplement et essayez de redémarrer MySQL

(3) Il se peut que MySQL ait été installé plusieurs fois sur la machine et qu'il y ait des données résiduelles qui affectent le démarrage du service.

Allez dans le répertoire de données mysql et jetez un œil si mysql-bin.index existe, supprimez-le immédiatement. C'est le coupable !

(4) Mysql utilisera le fichier de configuration /etc/my.cnf au démarrage sans spécifier de fichier de configuration. Veuillez ouvrir ce fichier pour voir s'il existe un répertoire de données spécifié sous le [. mysqld].

Ajouter des paramètres sous [mysqld], tels que datadir = /data/mysql/data

(5) problème de champ fédéré ignoré

Vérifiez s'il existe un champ fédéré ignoré non commenté dans le fichier my.cnf, et si c'est le cas, commentez-le immédiatement.

(6) Le répertoire du journal des erreurs n'existe pas

Allez dans le fichier my.cnf pour voir s'il existe un chemin de configuration du journal. Si c'est le cas, vérifiez si. le répertoire de journal existe. Journal Les autorisations du répertoire doivent être les autorisations de l'utilisateur de démarrage MySQL.

(7) Selinux est la cause du problème S'il s'agit d'un système centos, selinux sera activé par défaut

Fermez-le, ouvrez /etc/selinux/. config et définissez SELINUX=enforcing. Changez-le en SELINUX=disabled, enregistrez et quittez, puis essayez de redémarrer la machine.
(8) Essayez de réinitialiser les données mysql

Basculez vers le répertoire d'installation mysql

. /mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql

—————————————— ———— ----------------------

Utilisez le mysql informations autorisées du serveur pour se connecter à mysql, l'erreur est signalée comme suit :

ERREUR 2003 (HY000) : Impossible de se connecter au serveur MySQL sur '192.168 .1.14' (111)

Les raisons possibles sont :

1) Il peut y avoir un problème de connexion réseau à distance 192.168. .1.14 peut envoyer un ping avec succès. Cela exclut la situation

.

2) Les iptables du serveur mysql 192.168.1.14 ont des restrictions sur la liste blanche sur les connexions du port 3306 ;

3) Le fichier my.cnf du serveur mysql 192.168.1.14 a configuré la liaison d'adresse bind_address, la connexion locale n'est pas autorisée ;

4) skip_networking est configuré dans le fichier my.cnf du serveur mysql 192.168.1.14, qui utilise MySQL et ne peut se connecter que via le Socket local (connexion socket C'est également la méthode par défaut de connexion locale), abandonnez la surveillance de TCP/IP

5) Résolvez les problèmes de résolution DNS, vérifiez le fichier my.cnf du serveur mysql 192.168.1.14 Si skip_name_resolve y est défini. Une fois ce paramètre ajouté, la méthode de connexion par nom d'hôte n'est plus prise en charge.

6) Résolvez le problème --port Il est possible que le port MySQL de 192.168.1.14 sur le serveur mysql ne soit pas le 3306 par défaut, comme le port 3307. De cette façon, -- port= doit être ajouté lors de la connexion à distance. 3307

7) Résoudre les problèmes d'utilisateur et de mot de passe En fait, 111 n'apparaîtra pas pour les erreurs d'utilisateur et de mot de passe, donc les problèmes de mot de passe utilisateur sont éliminés
ERROR. 1045 (28000) : Accès refusé pour l'utilisateur 'root'@'XXXX' (en utilisant le mot de passe : OUI)

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!