Änderung des Zeitzonenproblems von MySQL-Containern in Docker

Änderung des Zeitzonenproblems von MySQL-Containern in Docker

Vorwort

Als Ahhang das Springboot-Projekt entwickelte, teilte ihm das Front-End immer mit, dass der Bestätigungscode ungültig sei. Beim lokalen Test gab es kein Problem, aber als ich mir die Datenbankzeit des Remote-Servers ansah, wow – sie war 8 Stunden zu früh. Offensichtlich war es ein MySQL-Zeitzonenproblem. In diesem Artikel wird beschrieben, wie die Zeitzone des MySQL-Containers in Docker geändert wird.

Lösung

Lassen Sie uns zunächst überprüfen, ob die Zeitzone der Datenbank wirklich falsch ist. Rufen Sie die MySQL-Datenbank auf und führen Sie die Anweisung aus:

JETZT AUSWÄHLEN();

Gibt Daten zurück, die ungefähr diesen ähneln:

mysql> JETZT AUSWÄHLEN();
+---------------------+
| JETZT() |
+---------------------+
| 04.07.2020 15:46:46 |
+---------------------+
1 Zeile im Satz (0,09 Sek.)

Um die aktuelle Zeitzone zu überprüfen, geben Sie den folgenden Befehl ein:

VARIABLEN WIE „%time_zone%“ ANZEIGEN;

Gibt Daten zurück, die ungefähr diesen ähneln:

mysql> VARIABLEN WIE '%time_zone%' ANZEIGEN;
+------------------+--------+
| Variablenname | Wert |
+------------------+--------+
| Systemzeitzone | UTC |
| Zeitzone | +00:00 |
+------------------+--------+
2 Reihen im Satz (0,12 Sek.)

Wenn die zurückgegebene Zeit mehrere Stunden von Ihrer abweicht und die Zeitzone nicht stimmt (nicht +08:00), müssen Sie nach unten schauen.

Methode 1: Temporäre Änderung

Wenn es dringend ist, können wir diese Änderung vorübergehend vornehmen. Führen Sie den folgenden Befehl aus:

GLOBALE Zeitzone festlegen = '+8:00';

Führen Sie den folgenden Befehl erneut aus, um zu überprüfen, ob das zurückgegebene Ergebnis die aktuelle Uhrzeit ist:

JETZT AUSWÄHLEN();

Die erfolgreiche Änderung wird durch die Rückgabe der aktuellen Uhrzeit nachgewiesen.

Der Grund, warum diese Methode „vorübergehende Änderung“ genannt wird, besteht darin, dass die Änderung nach einem Neustart von MySQL ungültig wird.

Methode 2: Parameter beim Start hinzufügen

Diese Methode gilt für Bedingungen, die es uns ermöglichen, einen MySQL-Container neu zu erstellen.

Beim Erstellen eines Containers müssen wir einen Befehl hinzufügen, um die Zeitzone anzugeben (Eastern Time Zone 8 ist Shanghai, Sie können sie bei Bedarf in Ihre eigene Zeitzone ändern):

-e TZ=Asien/Shanghai

Unser vollständiger Docker-Run-Befehl sollte also lauten (nur als Referenz, Ihr Run-Befehl kann leicht anders sein):

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -e TZ=Asia/Shanghai -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0

Um den Zweck der einzelnen Parameter zu sehen, lesen Sie bitte meinen Artikel: MySQL mit Docker installieren.

Methode 3: Ändern der Konfiguration im Container

Rufen Sie den MySQL-Container auf, indem Sie Folgendes eingeben:

Docker exec -it Container-ID Bash

Ändern Sie die MySQL-Konfigurationsdatei (zwei Fälle):

vim /etc/mysql/mysql.conf.d

oder

vim /etc/mysql/my.cnf

Wenn der obige Befehl „bash: vim: Befehl nicht gefunden“ zurückgibt, lesen Sie bitte zuerst die Lösung für „Kein Vim-Befehl im Docker-Container“.

Klicken Sie nach dem Aufrufen der Konfigurationsdatei auf i, um in den Bearbeitungsmodus zu wechseln und eine Zeile der Konfigurationsdatei hinzuzufügen:

Standardzeitzone = '+08:00'

Wie gezeigt:

Hinzufügen eines Profils

Wenn Sie fertig sind, drücken Sie ESC und geben Sie :wq ein, um zu speichern und zu beenden.

Geben Sie dann „exit“ ein, um den Docker-Container zu verlassen.

Als nächstes müssen wir den MySQL-Container neu starten. Geben Sie den folgenden Befehl ein:

Docker startet Container-ID neu

Bisher wurde die Zeitzonenkonfiguration erfolgreich geändert.

Geben Sie nach dem Neustart den folgenden Befehl ein, um den Erfolg zu überprüfen:

JETZT AUSWÄHLEN();

Wenn die zurückgegebene Zeit mit der aktuellen Zeit übereinstimmt, war die Änderung erfolgreich.

Abschluss

Wenn Sie es eilig haben, empfehlen wir Methode 1. Wenn Sie es nicht eilig haben, empfehlen wir Methode 2. Bitte wählen Sie die Methode aus, die Sie benötigen.

Dies ist das Ende dieses Artikels zum Beheben des Zeitzonenproblems im MySQL-Container von Docker. Weitere Informationen zur Zeitzone des MySQL-Containers von Docker finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So installieren Sie MySQL 8.0 in Docker
  • So führen Sie MySQL mit Docker-Compose aus
  • Upgrade der Docker-Version von MySQL 5.7 auf MySQL 8.0.13, Datenmigration
  • Detaillierte Erläuterung der Bereitstellung von MySQL mit Docker (Datenpersistenz)
  • Einfache Schritte zum Erstellen eines MySQL-Containers mit Docker
  • So führen Sie MySQL in einer Docker-Umgebung aus und aktivieren Binlog, um die Master-Slave-Synchronisierung zu konfigurieren

<<:  js, um einen coolen Feuerwerkseffekt zu erzielen

>>:  So sichern Sie MySQL unter Linux automatisch remote

Artikel empfehlen

Durch das flexible Layout können Unterelemente ihre eigene Höhe beibehalten

Beim Verwenden des Flex-Layouts werden Sie festst...

Zusammenfassung der Entwicklung benutzerdefinierter Vue 3-Richtlinien

Was ist eine Richtlinie? Sowohl Angular als auch ...

Detaillierte Analyse von MySQL-Deadlock-Problemen

Vorwort Wenn sich unser Geschäft in einem sehr fr...

Über die praktische Anwendung von HTML-Mailto (E-Mail) sprechen

Wie wir alle wissen, ist „mailto“ ein sehr praktis...

So ändern Sie die Kodierung in MySQL Version 5.7 unter Windows auf UTF-8

Vorwort Ich habe gerade angefangen, MySQL zu lern...

So stellen Sie das Crownblog-Projekt mit Docker in der Alibaba Cloud bereit

Front-End-Projektpaketierung Suchen Sie .env.prod...

Aktivierungsmethode für Windows Service 2016 Datacenter\Stand\Embedded (2021)

Führen Sie cmd mit Administratorrechten aus slmgr...

jQuery zum Erreichen des Sperrfeuereffekts

In diesem Artikel wird der spezifische Code von j...

Auf Wiedersehen Docker: So wechseln Sie in 5 Minuten zu Containerd

Docker ist eine sehr beliebte Containertechnologi...

Zusammenfassung der sieben grundlegenden XHTML-Codierungsregeln

1. Alle Tags müssen ein entsprechendes End-Tag hab...

Versionsnummern in CSS- und JS-Links in HTML (Cache aktualisieren)

Hintergrund Suchen Sie in der Suchmaschine nach d...

Die MySQL-Partitionstabelle ist nach Monaten klassifiziert

Inhaltsverzeichnis Erstellen einer Tabelle Zeigen...

So führen Sie das Excel-Tabellen-Plugin in Vue ein

In diesem Artikel wird der spezifische Code von V...

Detaillierte Erklärung der Linux-Befehle und der Dateisuche

1. Führen Sie eine Dateinamensuche durch which (S...

CSS-Schreibstandards und -Reihenfolge teilen [für alle empfohlen]

CSS-Schreibreihenfolge 1. Positionsattribute (Pos...