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 //跳过授权表
Starten Sie dann den MySQL-Dienst neu, um sich ohne Passwort anzumelden
[root@test-huanqiu ~]# /etc/init.d/mysqld restart
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>
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>
-------------------------------------------------------- ------ -------------------------------------------- ------ -----------
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)
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 | +-----------+------+-------------------------------------------+
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
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
Das ist kein Problem
[root@test-huanqiu ~]# mysql -p123456 mysql>
-------------------------------------- -------------------------------------------------- -- --------------------------
Fehler beim Starten von MySQL gemeldet:
Starting MySQL.... ERROR! The server quit without updating PID file (/data/mysql/data/mysql.pid).
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
———————————————————— —————— ----------
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; >
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!