Ausführliches Tutorial zu Installations- und Upgradeproblemen bei MySQL 5.7.30

Ausführliches Tutorial zu Installations- und Upgradeproblemen bei MySQL 5.7.30

Keil

Da auf dem Computer eine relativ alte MySQL-Version installiert war, wahrscheinlich Version 5.1, unterstützte diese die JSON-Feldfunktion nicht. Das neuste von der Entwicklungsabteilung entwickelte Editor-Produkt nutzt die Funktion von JSON-Feldern. Daher müssen Sie die MySQL-Version aktualisieren. Die Zielversion für das Upgrade ist MySQL 5.7.30 (obwohl die neueste Version 8.x ist, reicht 5.7 grundsätzlich aus). Während des Upgrade- und Installationsvorgangs stieß ich auf einige Fallstricke und habe sie in diesem Artikel aufgezeichnet.

Alte Version deinstallieren

Zuerst müssen Sie die alte Version deinstallieren. Die Deinstallation ist eigentlich ganz einfach. Sie müssen nur den MySQL-Dienst entfernen. Öffnen Sie zuerst CMD, wechseln Sie dann per cd in das MySQL-Bin-Verzeichnis und geben Sie dann den folgenden Befehl ein, um den MySQL-Dienst zu entfernen:

mysqld --remove mysql
//Hinweis: "msyql" ist der Dienstname. Wenn Sie bei der Installation keinen Dienstnamen angeben,
//Der Standardname ist MySQL (unter Windows wird die Groß-/Kleinschreibung nicht beachtet);
// Wenn während der Installation ein Name angegeben wird, muss der obige Name in den angegebenen Namen geändert werden.

msyql entfernen

Zu beachten ist, dass der MySQL-Dienst nach dem Löschen möglicherweise immer noch in der Windows-Dienstliste enthalten ist. Es spielt keine Rolle, wo Sie ihn aufbewahren, aber wenn Sie Angst vor Keimen haben und ihn löschen müssen, müssen Sie den entsprechenden Schlüssel in der Registrierung löschen (siehe Abbildung unten). Für unser Upgrade müssen wir natürlich nachträglich den Windows-Dienst installieren, dieser kann direkt überschrieben werden.

Registrierungsdiagramm

Löschen Sie dann die alten MySQL-bezogenen Ordner und die zugehörigen Umgebungsvariablenkonfigurationen.

Es ist zu beachten, dass die Daten erhalten bleiben müssen, wenn sich die Datendatei und das MySQL-Programm im selben Ordner befinden.

Installieren Sie Version 5.7.30

Der nächste Schritt besteht darin, die Version 5.7.30 zu installieren. Der erste Schritt besteht darin, sie herunterzuladen.

Laden Sie MySQL herunter

Die Download-Adresse lautet: https://dev.mysql.com/downloads/mysql/
Klicken Sie auf den Link oben, um zur Download-Seite zu gelangen. Da die neueste Version 8.x ist, ist die Standardversion 8.x. Klicken Sie auf „Suchen Sie nach den neuesten GA
Version "Wählen Sie die Version aus und laden Sie dann die kostenlose Installationsversion herunter:

herunterladen

Entpacken Sie MySQL

Nach dem Herunterladen entpacken Sie es in das Verzeichnis, in dem Sie es installieren möchten. Mein Verzeichnis ist beispielsweise:
D:\Programme (x86)\mysql-5.7.30-winx64

Inhaltsverzeichnis

Konfigurieren von Umgebungsvariablen

Fügen Sie D:\Program Files (x86)\mysql-5.7.30-winx64\bin nach dem Systemvariablenpfad hinzu, wie in der Abbildung gezeigt.

Umgebungsvariablen

Erstellen Sie eine Konfigurationsdatei my.ini

Das Installationspaket der Version 5.7.30 enthält standardmäßig nicht die Konfigurationsdatei my.ini. Sie müssen also selbst eine my.ini-Datei erstellen. Erstellen Sie die Datei my.ini manuell und geben Sie den folgenden Inhalt ein:

[mysql]
# Setzen Sie den Standardzeichensatz des MySQL-Clients auf default-character-set=utf8

[mysqld]
# Port 3306 einstellen port = 3306
# Legen Sie das MySQL-Installationsverzeichnis basedir=D:\Program Files (x86)\mysql-5.7.30-winx64 fest
# Legen Sie das Datenspeicherverzeichnis der MySQL-Datenbank datadir=D:\Program Files (x86)\mysql-5.7.30-winx64\data fest.
# Führen Sie die maximale Anzahl an Verbindungen aus max_connections=200
# Der vom Server verwendete Standardzeichensatz ist der 8-Bit-Latin1-Zeichensatz character-set-server=utf8
# Die Standard-Speicher-Engine, die beim Hinzufügen einer neuen Tabelle verwendet wird default-storage-engine=INNODB

Dabei gibt es einige Fallstricke, die es zu vermeiden gilt.

my.ini Hinweis 1

my.ini muss im ANSI-Format gespeichert werden (die Konfigurationsdatei ist standardmäßig im ANSI-Format kodiert und kann versehentlich in anderen Formaten, wie etwa UTF-8, gespeichert werden), da sonst nachfolgende Dienste möglicherweise nicht gestartet werden können. Wenn Sie nicht sicher sind, welches Format my.ini hat, können Sie es wie folgt speichern:

Format ANSI

my.ini Hinweis 2

Wenn Sie von einer früheren Version auf Version 5.7 aktualisieren, möchten Sie möglicherweise einfach die vorherige Konfigurationsdatei kopieren, um die vorherige Konfiguration beizubehalten. Diesmal sollten Sie darauf achten, dass viele Parameter der vorherigen Low-Versionen nicht mehr für die High-Versionen geeignet sind. Wenn es nicht geändert wird, schlägt der nachfolgende Dienststart fehl.

Einer der Parameter, die den bei mir aufgetretenen Fehler verursacht haben, war beispielsweise:

#table_cache=256 // niedrige Version table_open_cache=256 // hohe Version

Wenn Sie die Konfiguration der alten Version beibehalten müssen und mit den Parameteränderungen der neuen Version nicht vertraut sind, können Sie der Konfigurationsdatei die Protokollierungsfunktion hinzufügen. Auf diese Weise können Sie bei einem Fehler das Protokoll mit Einzelheiten anzeigen. Konfigurieren Sie den Protokollpfad wie folgt:

log_error=D:/mysql-5.7/error.log

Wenn der Start fehlschlägt, können Sie den Fehler im Protokoll anzeigen, z. B.:

Fehlerprotokoll

Weitere mögliche Fehlerparameter:

unbekannte Variable „key-buffer=256M“ //Entfernen Sie einfach die Änderung.

unbekannte Variable „table-cache=512“ //Ändern Sie sie in table_open_cache.

unbekannte Variable „thread-concurrency=8“ //Änderung entfernen, 5.7 wurde verworfen.

Wenn der Start eines Windows-Dienstes fehlschlägt, werden die Fehlerdetails nicht gekennzeichnet, sondern es wird lediglich angezeigt, dass der Dienst nicht gestartet werden konnte. Kann nur über die Konfigurationsprotokolldatei angezeigt werden.

Der Dienst kann nicht gestartet werden

MySQL-Dienst installieren

Der wichtigste Schritt ist die Installation des MySQL-Dienstes. Rufen Sie zunächst die cmd-Schnittstelle auf, wechseln Sie mit CD in das Bin-Verzeichnis von MySQL (beachten Sie, dass Sie hier im Bin-Verzeichnis ausführen müssen) und führen Sie den folgenden Befehl aus:

mysqld --install [Dienstname, Standard ist MySQL]

Die Screenshots sind wie folgt:

Installationsservices

Nach der Ausführung des Befehls wird angezeigt, dass der Dienst erfolgreich installiert wurde.

Anmerkung 1

Beachten Sie, dass möglicherweise die Fehlermeldung „Installation/Entfernen des Dienstes verweigert!“ angezeigt wird.
Grund: Bei der Installation von MySQL mit cmd unter normalen Benutzermodusberechtigungen wird eine solche Fehlermeldung angezeigt. Führen Sie cmd im Administratormodus aus:

Führen Sie cmd als Administrator aus

Sollten für weitere Schritte keine Ausführungsberechtigungen vorliegen, führen Sie diese bitte als Administrator aus.

Anmerkung 2

Auf einigen Computern wird die Fehlermeldung angezeigt, dass MSVCP120.dll nicht gefunden werden kann:

Fehler

Dieser Fehler wird dadurch verursacht, dass vcredist nicht installiert wurde. Adresse zum Herunterladen von vcredist: https://www.microsoft.com/zh-CN/download/details.aspx?id=40784
Installieren Sie den Dienst neu. Der Speicherort ist der Standardspeicherort. Installieren Sie den Dienst nach erfolgreicher Installation erneut.

MySQL initialisieren

MySQL 5.7 hat kein Datenverzeichnis, daher müssen Sie MySQL initialisieren und ein Datenverzeichnis erstellen. Auch das ist relativ einfach. Führen Sie einfach den folgenden Befehl aus:

mysqld --initialize-insecure --user=mysql

Es ist zu beachten, dass in einigen Artikeln hier die Verwendung von „mysqld --initialize“ vorgestellt wird. Der Unterschied zwischen „mysqld --initialize-insecure“ und „mysqld --initialize“ besteht darin, dass ersteres ein leeres Passwort erstellt, während letzteres ein zufälliges Passwort erstellt. Verwenden Sie daher "mysqld --initialize", vorzugsweise mit "--console", um das zufällige Passwort auszudrucken (beachten Sie, dass "--console" auf Windows beschränkt ist).

Konsole

Konsole

–user=msyql wird hauptsächlich verwendet, um das Datenverzeichnis für das MySQL-Konto unter Linux- oder Unix-Systemen zu autorisieren. Unter Windows ist die Verwendung nicht erforderlich.

Referenzlink zur Dateninitialisierung: https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/data-directory-initialization.html

Nach Abschluss der Initialisierung wird das Datenverzeichnis generiert.

Anmerkung 1

Wenn während der Initialisierung ein Fehler auftritt: „–initialize angegeben, aber das Datenverzeichnis enthält Dateien. Abbruch.“ Das liegt daran, dass Sie das Datenverzeichnis möglicherweise manuell erstellt haben und es Dateien enthält (beispielsweise könnten Sie dies während eines Upgrades getan haben). In diesem Fall müssen Sie nur das Datenverzeichnis löschen. Sie können ein Upgrade später in Betracht ziehen.

Das hier angegebene Datenverzeichnis bezieht sich auf das in der Datei my.ini angegebene Verzeichnis und nicht notwendigerweise auf das Verzeichnis unter der MySQL-Installationsdatei:
datadir=D:\Entwickeln\MySQL\mysql-8.0.12-winx64\data

Starten Sie den MySQL-Dienst

Um den MySQL-Dienst unter Windows zu starten, können Sie den folgenden Befehl verwenden:

net start MySQL

bild.png

Festlegen des MySQL-Dienstkennworts

Verwenden Sie mysqladmin, um das Kennwort festzulegen. Geben Sie nach dem Starten des MySQL-Dienstes den folgenden Befehl ein:

Passwort

Geben Sie das alte Passwort ein (durch den vorherigen Vorgang ist das alte Passwort leer), geben Sie dann das neue Passwort ein, bestätigen Sie das neue Passwort und die Einstellung ist erfolgreich.

Anmerkung 1

Wenn Sie das Kennwort bei der vorherigen Initialisierung nicht initialisiert haben und das Initialisierungskennwort versehentlich vergessen haben, treten die folgenden Probleme auf und Sie können sich nicht anmelden oder das Kennwort ändern:
„Zugriff für Benutzer ‚root‘@‚localhost‘ verweigert“

Lösen Sie das Problem, indem Sie die folgenden Schritte ausführen:

Skip-Grant-Tabellen hinzufügen

Fügen Sie skip-grant-tables zur Konfigurationsdatei my.ini hinzu:

bild.png

Starten Sie den MySQL-Dienst neu

Stoppen Sie zuerst den MySQL-Dienst und starten Sie ihn dann neu:

bild.png

Kennwort ändern

Melden Sie sich zunächst bei MySQL an. Derzeit ist kein Kennwort erforderlich. Gehen Sie dazu wie folgt vor:

Login

Um das Kennwort über SQL-Anweisungen zu ändern, verwenden Sie zunächst MySQL und aktualisieren Sie dann das Kennwort:

Kennwort ändern

Beenden Sie dann MySQL.

Löschen Sie Skip-Grant-Tabellen und starten Sie den MySQL-Dienst neu.

Löschen Sie zuerst „skip-grant-tables“ aus my.ini und starten Sie den Dienst dann mit „net stop mysql“ und „net start mysql“ neu.

Aktualisieren Sie alte MySQL-Daten auf 5.7

Um alte Daten zu aktualisieren, müssen Sie bei einem Upgrade von Version 5.x grundsätzlich nur die entsprechenden Datendateien in den Datenordner kopieren. Zu beachten ist, dass bei Verwendung von innodb Dateien wie „ibdata“ kopiert werden müssen. Andernfalls existiert der Bericht nicht:

Fehler: 1146: Tabelle „a_content“ existiert nicht

Innodb ist eine beliebte Datenbank-Engine für MySQL-Datenbanken, die Transaktionen (Zeilenebene) unterstützt. Ibdata wird zum Speichern von Dateidaten verwendet, und die Tabellendateien im Ordner mit dem Bibliotheksnamen sind nur Strukturen. Da die neue Version von MySQL standardmäßig innodb verwendet, ist die Datei ibdata1 standardmäßig vorhanden. Wenn diese Datei fehlt, schlagen einige Datentabellen fehl.

Wenn während des Upgrade-Vorgangs Daten beschädigt werden, können Sie diese mit dem Reparaturbefehl wiederherstellen:

Reparaturtabelle Tabellenname

Nachdem die oben genannten Vorgänge normal abgeschlossen wurden, ist alles in Ordnung. Wenn weiterhin Probleme auftreten, können Sie versuchen, die Daten mit dem Upgrade-Befehl mysql_upgrade zu aktualisieren (es wird auch empfohlen, diesen Befehl zum Aktualisieren zu verwenden, da sich nachfolgende Probleme sonst möglicherweise nur schwer lokalisieren lassen).
https://dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html

//MySQL aktualisieren, mysql_upgrade sucht nach inkompatiblen Tabellen und aktualisiert die Grant-Tabelle;
mysql_upgrade -uroot -p

Die Upgrade-Geschwindigkeit hängt von der Größe des Datenverzeichnisses ab.

Zusammenfassen

Dies ist das Ende dieses Artikels über das ausführliche Installations- und Upgrade-Tutorial von MySQL 5.7.30. Weitere relevante Inhalte zur Installation und zum Upgrade von MySQL 5.7.30 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Schritte zur Installation von MySQL 5.7 über YUM auf CentOS7
  • Detailliertes Grafik- und Text-Tutorial zum Herunterladen, Installieren und Konfigurieren von mysql-5.7.28 unter Windows
  • Tutorial zur Installation von MySQL 5.7.28 auf CentOS 6.2 (MySQL-Hinweise)
  • Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.27
  • MySQL5.7.27-winx64 Version Win10 Download- und Installations-Tutorial-Diagramm
  • MySQL 5.7 Installations- und Konfigurations-Tutorial unter CentOS7 64 Bit
  • Detaillierte Darstellung des MySQL 5.7.33-Installationsprozesses

<<:  Verständnis und Anwendungsszenarien von ES6-Erweiterungsoperatoren

>>:  Lösung für das Problem, dass nach dem Domänennamen zwei Schrägstriche // erscheinen, wenn nginx für den Domänennamenzugriff konfiguriert ist

Artikel empfehlen

Erste Schritte mit MySQL - Konzepte

1. Was ist das? MySQL ist das beliebteste relatio...

Verstehen Sie die Implementierung des Nginx-Standortabgleichs in einem Artikel

Da das Team Front-End und Back-End trennt, überni...

WeChat Mini-Programm: Position des Videofeuers zufällig

In diesem Artikel wird der spezifische Code zur z...

So passen Sie die Protokollebene von Nginx in Docker an

Inhaltsverzeichnis Einleitung Nginx-Dockerdatei N...

Aufbau einer Docker+K8S-Clusterumgebung und verteilte Anwendungsbereitstellung

1. Docker installieren yum installiere Docker #St...

Beispielschritte zur Verwendung von AntV X6 mit Vue.js

Inhaltsverzeichnis 0x0 Einführung 0x1 Installatio...

Vue-Ereignisparameter $event = Ereigniswertfall

Vorlage <el-table :data="Datenliste"...

So verwandeln Sie ein JAR-Paket in einen Docker-Container

So verwandeln Sie ein JAR-Paket in einen Docker-C...

JavaScript zur Implementierung eines einfachen Einkaufsformulars

In diesem Artikel wird der spezifische JavaScript...

SQL-Implementierung von LeetCode (182. Doppelte Postfächer)

[LeetCode] 182.Doppelte E-Mails Schreiben Sie ein...