MariaDBでSET time_zoneステートメントを使用してタイムゾーンを設定する方法
MariaDBの設定ファイルでタイムゾーンを設定する方法
設定ファイルの種類
MariaDBの設定ファイルは、主に2種類あります。
- my.cnf: サーバ全体の設定ファイル
- my.ini: 個々のクライアントの設定ファイル
どちらの設定ファイルを使用するかは、設定内容と環境によって異なります。
設定ファイルの場所
my.cnf
- デフォルトの場所:
- Linux:
/etc/my.cnf
- Linux:
- その他の場所:
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
- デフォルトの場所:
設定方法
設定ファイルに以下の行を追加します。
[mysqld]
default_time_zone = 'Asia/Tokyo'
上記の例では、タイムゾーンをAsia/Tokyo
に設定しています。
設定可能なタイムゾーンは、MariaDBのバージョンによって異なります。詳細は、以下のドキュメントを参照してください。
設定の反映
設定ファイルを編集したら、MariaDBを再起動する必要があります。
MariaDBの再起動方法
- Linux:
sudo service mysql restart
- Windows:
- サービスコンソールを開きます。
- MySQL サービスを右クリックして、再起動 を選択します。
確認方法
以下のコマンドを実行して、タイムゾーンが正しく設定されていることを確認できます。
mysql -e "SELECT @@global.time_zone;"
出力例:
+----------------------+
| @@global.time_zone |
+----------------------+
| Asia/Tokyo |
+----------------------+
- 設定ファイルの編集には、管理者権限が必要です。
- 設定ファイルの編集前に、必ずバックアップを取るようにしてください。
- 設定ファイルの構文が間違っていると、MariaDBが起動しなくなる可能性があります。
設定例
[mysqld]
default_time_zone = 'Asia/Tokyo'
タイムゾーンをUTCに設定
[mysqld]
default_time_zone = 'UTC'
注意事項
- 設定ファイルでタイムゾーンを設定すると、すべてのデータベース接続に影響します。
- 個々のデータベース接続で異なるタイムゾーンを使用したい場合は、
SET time_zone
ステートメントを使用できます。
[mysqld]
default_time_zone = 'Asia/Tokyo'
# 個々のデータベース接続で異なるタイムゾーンを使用したい場合は、
# 以下の設定をコメントアウトしてください。
# time_zone = SYSTEM
MySQL クライアント
mysql -e "SELECT @@global.time_zone;"
# 個々のデータベース接続で異なるタイムゾーンを使用する場合は、
# 以下のコマンドを使用します。
mysql -e "SET time_zone = 'America/Los_Angeles';"
+----------------------+
| @@global.time_zone |
+----------------------+
| Asia/Tokyo |
+----------------------+
+----------------------+
| @@session.time_zone |
+----------------------+
| America/Los_Angeles |
+----------------------+
説明
- 上記のサンプルコードは、タイムゾーンを
Asia/Tokyo
とAmerica/Los_Angeles
に設定します。 my.cnf
ファイルで設定したタイムゾーンは、すべてのデータベース接続に適用されます。SET time_zone
ステートメントを使用して、個々のデータベース接続で異なるタイムゾーンを設定することができます。
MariaDBでタイムゾーンを設定する他の方法
SET time_zone ステートメント
例:
mysql -e "SET time_zone = 'America/Los_Angeles';"
# 現在の接続のタイムゾーンを確認するには、以下のコマンドを使用します。
mysql -e "SELECT @@session.time_zone;"
+----------------------+
| @@session.time_zone |
+----------------------+
| America/Los_Angeles |
+----------------------+
注意事項:
SET time_zone
ステートメントは、現在の接続にのみ適用されます。- サーバ全体のタイムゾーンを変更するには、
my.cnf
ファイルを使用する必要があります。
mysql -e "CREATE DATABASE my_database DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT TIME ZONE 'America/Los_Angeles';"
- この方法を使用するには、MariaDB 10.2 以降が必要です。
- データベース作成後にタイムゾーンを変更するには、
ALTER DATABASE
ステートメントを使用する必要があります。
環境変数 TZ
を使用して、クライアント接続のタイムゾーンを設定することができます。
# Linux
export TZ="Asia/Tokyo"
# Windows
set TZ="Asia/Tokyo"
mysql -e "SELECT @@session.time_zone;"
+----------------------+
| @@session.time_zone |
+----------------------+
| Asia/Tokyo |
+----------------------+
- この方法は、すべてのクライアント接続に適用されます。
アプリケーションの設定
使用しているアプリケーションによっては、タイムゾーン設定機能が提供されている場合があります。詳細は、アプリケーションのドキュメントを参照してください。
timezone mariadb