Ä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

Vue.js-Textfeld mit Dropdown-Komponente

Ein Textfeld mit Dropdown-Liste ermöglicht es Ben...

Verwenden von Nginx zum Implementieren der Graustufenversion

Unter Graustufenfreigabe versteht man eine Freiga...

Kompatibilitätsprobleme mit CSS3-Farbverlaufshintergründen

Wenn wir eine Hintergrundfarbe mit Farbverlauf er...

Detaillierte Erläuterung der Verwendung des MySQL-Auswahl-Cache-Mechanismus

Der MySQL-Abfragecache ist standardmäßig aktivier...

Lösen Sie das Problem der Verwendung von weniger in Vue

1. Installieren Sie weniger Abhängigkeiten: npm i...

Popularisierung der Theorie – Benutzererfahrung

1. Konzeptanalyse 1: UE User Experience <br /&...

Tutorial zur Konfiguration der kostenlosen MySQL-Installationsversion

In diesem Artikel wird das kostenlose MySQL-Insta...