Da keine der obigen Antworten tatsächlich erklärt, was passiert ist, habe ich mich entschlossen, mich zu melden und weitere Details zu diesem Thema zu bringen.
Ja, die Lösung besteht darin, den Befehl MySQL Upgrade wie folgt auszuführen: mysql_upgrade -u root -p --force
Aber was ist passiert?
Die Hauptursache für dieses Problem ist die Beschädigung von performance_schema
, die verursacht werden kann durch:
- Organische Korruption (Volumes gehen Kaboom, Engine Bug, Kernel Treiber Problem usw.)
- Beschädigung während des MySQL-Patches (es ist nicht ungewöhnlich, dass dies während eines MySQL-Patches passiert, insbesondere bei größeren Versions-Upgrades)
- Ein einfaches "drop database performance_schema" verursacht offensichtlich dieses Problem und zeigt dieselben Symptome, als ob es beschädigt wäre
Dieses Problem war möglicherweise bereits vor dem Patch in Ihrer Datenbank vorhanden. In MySQL 5.7.8 wurde jedoch festgestellt, dass das Flag show_compatibility_56
seinen Standardwert ON
von "Standard" auf "Standard" geändert hatOFF
. Dieses Flag steuert, wie sich die Engine bei Abfragen zum Festlegen und Lesen von Variablen (Sitzung und global) in verschiedenen MySQL-Versionen verhält.
Da MySQL 5.7+ zu lesen und speichern begonnen , diese Variablen auf performance_schema
statt auf information_schema
wurde, dieses Flag als eingeführt ON
für die ersten Veröffentlichungen der Explosionsradius dieser Änderung zu reduzieren und Nutzer über die Änderung zu informieren und sich daran gewöhnen.
OK, aber warum schlägt die Verbindung fehl? Abhängig vom verwendeten Treiber (und seiner Konfiguration) werden möglicherweise Befehle für jede neue Verbindung ausgeführt, die zur Datenbank initiiert wird ( show variables
z. B.). Weil einer dieser Befehle versuchen kann, auf einen beschädigten zuzugreifenperformance_schema
Verbindung , wird die gesamte Verbindung abgebrochen, bevor sie vollständig initiiert wird.
Zusammenfassend lässt sich sagen, dass Sie möglicherweise (es ist derzeit nicht zu sagen) performance_schema
vor dem Patchen entweder fehlten oder beschädigt waren. Der Patch auf 5.7.8 zwang die Engine dann dazu, Ihre Variablen auszulesen performance_schema
(anstatt von dort information_schema
, wo sie aufgrund des gedrehten Flags gelesen wurde ON
). Da performance_schema
wurde beschädigt, schlagen die Verbindungen fehl.
Das Ausführen eines MySQL-Upgrades ist trotz der Ausfallzeit der beste Ansatz. Das Aktivieren des Flags ist eine Option, hat jedoch eine Reihe von Auswirkungen, auf die bereits in diesem Thread hingewiesen wurde.
Beide sollten funktionieren, aber die Konsequenzen abwägen und Ihre Entscheidungen kennen :)
5.7.8-rc
Version erneut installieren und eine vollständige Sicherung von DB wiederherstellen).