it-swarm.com.de

Fehlercode: 1728. Kann nicht aus mysql.db geladen werden. Die Tabelle ist wahrscheinlich beschädigt

Immer wenn ich versuche, eine DB-Abfrage mit einem bestimmten DB-Benutzer (myuser) durchzuführen, wird folgende Fehlermeldung angezeigt:

Zugriff für Benutzer 'myuser' @ 'localhost' auf Datenbank 'mydatabase' verweigert [1044]

Ich habe mich entschlossen, die Zuschüsse für diesen Benutzer zu überprüfen, und festgestellt, dass einer der Zuschüsse möglicherweise von einem Update profitieren kann. Daher habe ich versucht, ihn zu aktualisieren, und habe den folgenden Fehler erhalten:

Fehlercode: 1728. Kann nicht aus mysql.db geladen werden. Die Tabelle ist wahrscheinlich beschädigt

Ich habe den Fehler bei Google gefunden und festgestellt Kann nicht aus mysql.proc geladen werden. Die Tabelle ist wahrscheinlich beschädigt , was empfiehlt, mysql_upgrade -u root -pxxx. Ich habe das versucht und diesen Fehler bekommen:

Fehler aufgetreten: Die mysql.session existiert, ist aber nicht richtig konfiguriert. Die mysql.session benötigt SELECT-Berechtigungen in der Datenbank performance_schema und in der Tabelle mysql.db sowie SUPER-Berechtigungen.

Ich google diesen Fehler und fand MySQL Upgrade Issue aber die Antwort dort ist nicht zutreffend - es scheint nur ein mysql.session Benutzer, wenn ich SELECT * FROM mysql.user;. Also dachte ich mir, ich erstelle die GRANTs einfach selbst:

GRANT SELECT ON `performance_schema`.* TO 'mysql.session'@'localhost';
GRANT SELECT ON `mysql`.`db` TO 'mysql.session'@'localhost';
GRANT SUPER ON *.* TO 'mysql.session'@'localhost';

Einziges Problem: Wenn ich das versuche, bekomme ich das gleiche "Error Code: 1728. Cannot load from mysql.db. The table is probably corrupted "das habe ich vorher bekommen.

Meine Frage ist ... was kann ich tun, um dies zu beheben? Ich habe eine vollständige DB-Sicherung, die ich vor einigen Monaten ohne Probleme wiederhergestellt habe, und wenn seitdem DB-Änderungen in der DB aufgetreten sind, kann ich verlieren. Vielleicht ist meine beste Option, MySQL einfach zu deinstallieren und neu zu installieren? Und wenn dies der Fall ist, kann ich dann Maßnahmen ergreifen, um zu verhindern, dass dieses Problem erneut auftritt?

Ich verwende MySQL 5.7.25-0ubuntu0.16.04.2 unter Ubuntu 16.04.5 LTS auf einem Digital Ocean-Tröpfchen.

Irgendwelche Ideen?

edit: Ich erhalte auch diesen Fehler, wenn ich versuche, einen neuen MySQL-Benutzer zu erstellen:

CREATE USER username IDENTIFIED BY 'password';

Ich habe es versucht mysqlcheck -uroot mysql db und habe das zurückbekommen:

mysql.db                                           OK

Ich habe es versucht ls -latr /var/lib/mysql/mysql/db* und habe das zurückbekommen:

-rw-r----- 1 mysql mysql   65 Nov  8 03:55 db.opt
-rw-r----- 1 mysql mysql  440 Nov 10 17:51 db.MYD
-rw-r----- 1 mysql mysql 5120 Feb 11 11:54 db.MYI
-rw-r----- 1 mysql mysql 9582 Feb 11 11:54 db.frm

Ich stelle fest, dass es kein * .ibd-Datei-IDK gibt.

SELECT * FROM mysql.db, während als SSH root/MySQL angemeldet, funktioniert ohne Probleme, aber alle "Error Code: 1728. Cannot load from mysql.db. The table is probably corrupted "Fehler kommen auch zu mir, wenn ich als SSH-Root/MySQL-Root angemeldet bin, also idk.

edit2: Ich kann nicht mal apt-get remove mysql-server da es mir die gleiche "mysql.session existiert aber nicht richtig konfiguriert" gibt, die ich vorher bekommen habe ...

2
neubert

Ich habe diesen Fehler oft gesehen, als ich frühere Versionen von MySQL 5.7 installiert habe. Ich bin fassungslos, dass Sie immer noch diesen Fehler erhalten.

Vor MySQL 8.0 sind einige der Tabellen im Schema mysqlMyISAM.

Leider werden MyISAMtables sehr leicht beschädigt.

BEISPIEL: Der Header des .MYD Datei enthält die Anzahl der geöffneten Dateihandles. Wenn eine MyISAM -Tabelle geschlossen ist und einen Wert ungleich Null für geöffnete Dateihandles aufweist, betrachtet die Speicher-Engine MyISAM die Tabelle als beschädigt.

Lösung: Führen Sie einfach den folgenden Befehl aus:

mysql> REPAIR TABLE mysql.db;

Ich habe dies vorher vorgeschlagen: Mar 15, 2012: Warum stürzen MySQL-Tabellen ab? Wie verhindere ich das?

1
RolandoMySQLDBA