Heim > Datenbank > MySQL-Tutorial > Hauptteil

Teilen Sie Lösungen für Probleme mit dem Vergessen von MySQL-Passwörtern und Anmeldefehlern

黄舟
Freigeben: 2017-03-23 13:29:57
Original
1330 Leute haben es durchsucht

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, um einen Blick darauf zu werfen.

MySQL-Anmeldekennwort vergessen? Tatsächlich ist die Lösung sehr einfach. Sie müssen nur eine Zeile mit dem Parameter „Autorisierungstabelle überspringen“ zur Hauptkonfiguration hinzufügen Datei von mysql my.cnf Einfach auswählen!

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

[root@test-huanqiu ~]# vim /etc/my.cnf            
  //在[mysqld]区域里添加
........
skip-grant-tables 
                     
 //跳过授权表
Nach dem Login kopieren

Starten Sie dann den MySQL-Dienst neu, um sich ohne Passwort anzumelden

[root@test-huanqiu ~]# /etc/init.d/mysqld restart
Nach dem Login kopieren

Passwort nach dem Anmelden 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>
Nach dem Login kopieren

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

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

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

Eine Grube entdeckt :

MySQL wurde 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)
Nach dem Login kopieren

Lösung:

Daten eingeben und 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 |
+-----------+------+-------------------------------------------+
Nach dem Login kopieren

Dann können Sie sich ganz normal mit dem Reset-Passwort anmelden!

------------------------------------------------------- -------------------------------------------------- -----------------------
MySQL-Anmeldefehler 1:

[root@test-huanqiu ~]# mysql -p123456ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
[root@test-huanqiu ~]# ps -ef|grep mysqlroot 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.pidmysql 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=3306root 30726 11268 0 12:58 pts/2 00:00:00 grep mysql
Nach dem Login kopieren

Es ist ersichtlich, dass der aktuelle Dateipfad von mysql.sock /usr/local/mysql/var/mysql.sock ist,

Lösung: Erstellen Sie einen Softlink

[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
Nach dem Login kopieren

Das ist kein Problem

[root@test-huanqiu ~]# mysql -p123456
mysql>
Nach dem Login kopieren

-------------------------------------- -------------------------------------------------- -- --------------------------
Fehler beim Starten von MySQL gemeldet:

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

Lösungsversuche:

(1) Berechtigungsproblem

Vielleicht MySQL Die .pid-Datei hat keine Schreibberechtigungen. 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 sehen Sie nach, ob mysql-bin.index vorhanden ist. Es ist der Übeltäter.


(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 zum MySQL-Installationsverzeichnis

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

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


Verwendung von MySQL

Serverautorisierung Melden Sie sich bei MySQL an und der Fehler lautet wie folgt:
FEHLER 2003 (HY000): Es kann keine Verbindung zum MySQL-Server unter '192.168.1.14 hergestellt werden ' (111)

Mögliche Gründe sind:

1) Mögliches Netzwerkverbindungsproblem, Remote-Ping 192.168.1.14, kann erfolgreich gepingt werden, diese Situation ausschließen; >

2) mysql Die iptables des Servers 192.168.1.14 haben eine Whitelist-Einschränkung für die 3306-Port-Verbindung vorgenommen;


3) Die my.cnf-Datei des MySQL-Servers 192.168.1.14 .1.14 ist mit bind_address-Adressbindung konfiguriert, was nicht zulässig ist


4) Skip_networking ist in der my.cnf-Datei des MySQL-Servers 192.168.1.14 konfiguriert. MySQL kann nur über den lokalen Socket verbunden werden (Socket-Verbindung ist auch die Standardmethode von

lokale Verbindung). up on TCP/IP-Überwachung;

5) Beheben Sie DNS-Auflösungsprobleme und prüfen Sie, ob „skip_name_resolve“ in der my.cnf-Datei des MySQL-Servers 192.168.1.14 festgelegt ist. Nach dem Hinzufügen dieses Parameters unterstützt

die Hostnamen-Verbindungsmethode nicht.

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 bei einer Remote-Verbindung hinzugefügt werden.

7) Auf Benutzer- und Passwortprobleme prüfen. Tatsächlich wird 111 nicht angezeigt, wenn Benutzer- und Passwortprobleme ausgeschlossen sind

FEHLER 1045 (28000): Zugriff für Benutzer „root“@„XXXX“ verweigert (mit Passwort: JA)

Das obige ist der detaillierte Inhalt vonTeilen Sie Lösungen für Probleme mit dem Vergessen von MySQL-Passwörtern und Anmeldefehlern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage