Heim >Datenbank >MySQL-Tutorial >Ausführliche Erläuterung des Problems des vergessenen MySQL-Passworts und des Anmeldefehlers

Ausführliche Erläuterung des Problems des vergessenen MySQL-Passworts und des Anmeldefehlers

黄舟
黄舟Original
2017-03-27 13:26:201301Durchsuche

Der unten stehende Herausgeber bringt Ihnen eine kurze Diskussion über MySQLdas Problem vergessener Passwörter und Anmeldefehler. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.

MySQL-Anmeldekennwort vergessen? Tatsächlich ist die Lösung sehr einfach. Sie müssen nur eine Zeile „jump“ zur Hauptkonfigurationsdatei hinzufügen von mysqlmy.cnf. Wählen Sie einfach die Parameter von „Autorisierungsformular“ aus!

Fügen Sie die folgende Zeile in my.cnf hinzu:

[root@test-huanqiu ~]# vim /etc/my.cnf            
  //在[mysqld]区域里添加
........
skip-grant-tables 
                     
 //跳过授权表
Starten Sie dann den MySQL-Dienst neu und nichts wird passieren Passwort-Anmeldung


[root@test-huanqiu ~]# /etc/init.d/mysqld restart
Passwort nach der Anmeldung zurücksetzen

[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>

Kommentar die in my.cnf hinzugefügte Zeile erneut und dann MySQL neu starten

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

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

Eine Falle entdeckt:

MySQL war zuvor vollständig gesichert. Nach der Wiederherstellung stellte ich fest, dass ich mich mit dem vorherigen Passwort nicht anmelden konnte!

Verwenden Sie die oben beschriebene Methode, um sich ohne Passwort anzumelden und dann das Passwort zurückzusetzen. Nach dem Zurücksetzen des Passworts können Sie sich jedoch immer noch nicht anmelden.

Schließlich wurde festgestellt, dass der Inhalt der Tabelle mysql.user gelöscht wurde!


mysql> select host,user,password from user;
Empty set (0.00 sec)

Lösung:

Daten eingeben, dann Passwort zurücksetzen

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 |
+-----------+------+-------------------------------------------+
Dann können Sie sich ganz normal mit dem zurückgesetzten Passwort anmelden!

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

MySQL-Anmeldefehler 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
Es ist ersichtlich, dass der aktuelle Dateipfad von mysql.sock /usr/local/mysql/var/mysql.sock ist,

Lösung : Software-Link erstellen

[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
So ist es in Ordnung

[root@test-huanqiu ~]# mysql -p123456
mysql>

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

MySQL starten Fehler gemeldet:

Starting MySQL.... ERROR! The server quit without updating PID file (/data/mysql/data/mysql.pid).

Lösungsversuche:

(1) Berechtigungsproblem


Es kann sein, dass die Datei mysql.pid keine Schreibberechtigungen hat. Legen Sie die Berechtigungen des

Installationsverzeichnisses von MySQL auf die Berechtigungen des MySQL-Startbenutzers fest. Ändern Sie es beispielsweise in MySQL: MySQL-Berechtigungen

(2) Der MySQL-Prozess existiert möglicherweise bereits im Prozess


ps -ef|grep mysql, um herauszufinden, ob dort vorhanden ist ist ein MySQL-Prozess. Beenden Sie ihn einfach und versuchen Sie, MySQL neu zu starten Service.


Gehen Sie in das MySQL-Datenverzeichnis und schauen Sie nach. Wenn mysql-bin.index vorhanden ist, löschen Sie es sofort.


(4) Mysql verwendet beim Start die Konfigurationsdatei /etc/my.cnf, ohne eine Konfigurationsdatei anzugeben. Bitte öffnen Sie diese Datei, um zu sehen, ob sich unter dem [ ein bestimmtes Datenverzeichnis befindet. mysqld] Abschnitt.


Einstellungen unter [mysqld] hinzufügen, z. B. datadir = /data/mysql/data


(5) Problem mit übersprungenen Verbundfeldern


Überprüfen Sie, ob in der Datei my.cnf ein unkommentiertes Feld mit Skip-Federated vorhanden ist, und wenn ja, kommentieren Sie es sofort aus.


(6) Das Fehlerprotokollverzeichnis existiert nicht


Gehen Sie zur Datei my.cnf, um zu sehen, ob ein Protokollkonfigurationspfad vorhanden ist. Wenn ja, prüfen Sie, ob Das Protokollverzeichnis ist vorhanden. Protokoll Die Verzeichnisberechtigungen müssen den Berechtigungen des MySQL-Startbenutzers entsprechen.


(7) Selinux ist die Ursache des Problems. Wenn es sich um ein Centos-System handelt, ist Selinux standardmäßig aktiviert.


Schließen Sie es und öffnen Sie /etc/selinux/. config und legen Sie SELINUX=enforcing fest. Ändern Sie es in SELINUX=disabled, speichern und beenden Sie es und versuchen Sie, den Computer neu zu starten.

(8) Versuchen Sie, die MySQL-Daten neu zu initialisieren



Wechseln Sie in das MySQL-Installationsverzeichnis


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

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

Verwenden Sie zum Anmelden die vom MySQL

-Server autorisierten Informationen an mysql wird der Fehler wie folgt gemeldet:
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.14' (111)

Mögliche Gründe sind:

1) Möglicherweise liegt ein Netzwerkverbindungsproblem vor. 192.168.1.14 kann erfolgreich gepingt werden. Dies schließt die Situation aus;

2) Die iptables des MySQL-Servers 192.168.1.14 haben Einschränkungen für Port 3306-Verbindungen;

3) Die my.cnf-Datei des MySQL-Servers 192.168.1.14 hat bind_address-Adressbindung. lokale Verbindung ist nicht zulässig;

4) skip_networking ist in der my.cnf-Datei des MySQL-Servers 192.168.1.14 konfiguriert, der MySQL verwendet und nur über den lokalen Socket (Socket-Verbindung) eine Verbindung herstellen kann die Standardmethode der lokalen Verbindung), geben Sie die Überwachung von TCP/IP auf;

5) Beheben Sie DNS-Auflösungsprobleme, überprüfen Sie die my.cnf-Datei des MySQL-Servers 192.168.1.14 Ob darin „skip_name_resolve“ festgelegt ist. Nachdem dieser Parameter hinzugefügt wurde, wird die Hostnamen-Verbindungsmethode nicht unterstützt.

6) Beheben Sie das --port-Problem. Es ist möglich, dass der MySQL-Port 192.168.1.14 auf dem MySQL-Server nicht der Standardport 3306 ist, z. B. Port 3307. Auf diese Weise -- port= muss hinzugefügt werden, wenn eine Remoteverbindung hergestellt wird.

7) Fehlerbehebung bei Benutzer- und Passwortfehlern. Tatsächlich wird 111 bei Benutzer- und Passwortfehlern nicht angezeigt, sodass Probleme mit dem Benutzerpasswort ausgeschlossen sind 1045 (28000): Zugriff für Benutzer „root“@„XXXX“ verweigert (mit Passwort: JA)

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Problems des vergessenen MySQL-Passworts und des Anmeldefehlers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn