Beim MySQL-Server gibt es mehrere verschiedene Zeitzoneneinstellungen:
Die Systemzeitzone. Wenn der Server startet, versucht er die Zeitzone des Hostcomputers zu ermitteln und weist diesen Wert dann der Systemvariable system_time_zone zu. Der Wert wird nachfolgend nicht mehr geändert.
Die aktuelle Zeitzone des Servers. Die globale Systemvariable time_zone gibt die Zeitzone an, in der der Server derzeit läuft. Der Startwert für time_zone ist 'SYSTEM', d. h. die Serverzeitzone ist mit der Systemzeitzone identisch. Der Ausgangswert lässt sich mit der Option --default-time-zone= auch ausdrücklich festlegen. Wenn Sie die Berechtigung timezoneSUPER haben, können Sie den globalen Wert mit folgender Anweisung zur Laufzeit ändern:
mysql> SET GLOBAL time_zone = timezone;
Verbindungsspezifische Zeitzonen. Jeder Client, der eine Verbindung herstellt, hat eine eigene Zeitzoneneinstellung, die von der Sitzungsvariablen time_zone vorgegeben wird. Standardmäßig erhält die Sitzungsvariable den Wert von der globalen Variable time_zone, der Client kann seine Zeitzone aber mit folgender Anweisung ändern:
mysql> SET time_zone = timezone;
Die aktuellen Werte der globalen und der clientspezifischen Zeitzone lassen sich wie folgt abrufen:
mysql> SELECT @@global.time_zone, @@session.time_zone;
timezone-Werte können als Strings angegeben werden, die einen Offset zur UTC angeben (z. B. '+10:00' oder '-6:00'). Wenn die Zeitzonen-Informationstabellen in der mysql-Datenbank erstellt und ausgefüllt wurden, können Sie auch benannte Zeitzonen wie etwa 'Europe/Helsinki', 'US/Eastern' oder 'MET' verwenden. Mit dem Wert 'SYSTEM' kann angegeben werden, dass die Zeitzone denselben Wert haben sollte wie die Systemzeitzone. Bei den Zeitzonennamen wird die Groß-/Kleinschreibung nicht unterschieden.
Der MySQL-Installationsvorgang erzeugt Zeitzonentabellen in der mysql-Datenbank, lädt diese aber nicht. Dies müssen Sie manuell tun. (Wenn Sie von einer früheren Version auf MySQL 4.1.3 oder höher aktualisieren, sollten Sie die Tabellen erstellen, indem Sie ein Upgrade Ihrer mysql-Datenbank durchführen. Verwenden Sie hierzu die Anleitung in Abschnitt 5.6, „mysql_fix_privilege_tables — Upgrade von MySQL-Systemtabellen“.)
Wenn Ihr System eine eigene zoneinfo-Datenbank hat (dies ist ein Satz von Dateien, die die Zeitzonen beschreiben), dann sollten Sie das Programm mysql_tzinfo_to_sql zum Ausfüllen der Zeitzonentabellen verwenden. Beispiele für solche Systeme sind Linux, FreeBSD, Sun Solaris und Mac OS X. Eine wahrscheinliche Position für diese Dateien ist das Verzeichnis /usr/share/zoneinfo. Verfügt Ihr System nicht über eine zoneinfo-Datenbank, dann können Sie das im weiteren Verlauf dieses Abschnitts genannte Paket herunterladen und verwenden.
Das Programm mysql_tzinfo_to_sql wird zum Laden der Zeitzonentabellen verwendet. Auf der Befehlszeile übergeben Sie den Pfadnamen des zoneinfo-Verzeichnisses an mysql_tzinfo_to_sql und leiten die Ausgabe in das Programm mysql. Zum Beispiel:
shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
mysql_tzinfo_to_sql liest die Zeitzonendateien Ihres Systems aus und erzeugt daraus SQL-Anweisungen. mysql verarbeitet diese Anweisungen, um die Zeitzonentabellen zu laden.
mysql_tzinfo_to_sql kann auch zum Laden einer einzelnen Zeitzonendatei und zur Erzeugung von Schaltsekunden verwendet werden:
Um eine einzelne Zeitzonendatei tz_file zu laden, die einem Zeitzonennamen tz_name entspricht, rufen Sie mysql_tzinfo_to_sql wie folgt auf:
shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql
Wenn Ihre Zeitzone Schaltsekunden berücksichtigen muss, initialisieren Sie die Schaltsekundeninformation wie folgt (hierbei ist tz_file der Name der Zeitzonendatei):
shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql
Verfügt Ihr System über keine zoneinfo-Datenbank (dies gilt beispielsweise für Windows oder HP-UX), dann können Sie das Paket mit den vorerstellten Zeitzonentabellen verwenden, welches unter http://dev.mysql.com/downloads/timezones.html heruntergeladen werden kann. Dieses Paket enthält .frm-, .MYD- und .MYI-Dateien für die MyISAM-Zeitzonentabellen. Diese Tabellen sollten Teil der mysql-Datenbank sein, d. h. Sie sollten Sie Dateien im Unterverzeichnis mysql des Datenverzeichnisses Ihres MySQL-Servers ablegen. Währenddessen sollte der Server beendet sein.
Warnung: Verwenden Sie das herunterzuladende Paket nicht, wenn Ihr System über eine zoneinfo-Datenbank verfügt. Benutzen Sie stattdessen das Hilfsprogramm mysql_tzinfo_to_sql. Andernfalls kann es zu Diskrepanzen in der Verarbeitung von Datum und Uhrzeit zwischen MySQL und anderen Anwendungen auf Ihrem System kommen.
Informationen zu Zeitzoneneinstellungen in der Replikationskonfiguration finden Sie in Abschnitt 6.8, „Replikation: Features und bekannte Probleme“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.
