MariaDB (MySQL) のタイムゾーン、タイムゾーンテーブルを設定する
MariaDB (MySQL) のタイムゾーン、タイムゾーンテーブルを設定する手順を紹介します。
Windowsの場合
タイムゾーンファイルのダウンロード
Windowsの場合はOSにタイムゾーンの設定が無いため、タイムゾーンのファイルをダウンロードする必要があります。
https://dev.mysql.com/downloads/timezones.htmlのページにアクセスします。下図の画面が表示されますので、timezoneのposixファイルをダウンロードします。今回は、最新のMariaDBを利用していますので、"timezone_2017b_posix_sql.zip" ファイルをダウンロードします。
zipファイルを展開します。timezone_posix.sql ファイルが展開されます。
timezone_posix.sql ファイルの実行
ダウンロードした timezone_posix.sql を実行します。MySQLのコマンドプロンプトから下記のコマンドを実行します。
mysql --user=root --password mysql < c:\timezone_posix.sql
コマンドを実行します。
パスワードの入力プロンプトが表示されます。MariaDBのrootのパスワードを入力します。
コマンドが正常に実行できると、特にメッセージは表示されず、コマンド入力待ち状態になります。
my.iniファイルの変更
my.iniファイルを変更します。
my.ini 変更前
[mysqld]
datadir=C:/Program Files/MariaDB 10.2/data
port=3306
innodb_buffer_pool_size=255M
character-set-server=utf8
[client]
port=3306
plugin-dir=C:/Program Files/MariaDB 10.2/lib/plugin
my.ini 変更後
default-time-zone='Asia/Tokyo' の行を追加します。
[mysqld]
datadir=C:/Program Files/MariaDB 10.2/data
port=3306
innodb_buffer_pool_size=255M
character-set-server=utf8
default-time-zone='Asia/Tokyo'
[client]
port=3306
plugin-dir=C:/Program Files/MariaDB 10.2/lib/plugin
timezone_posix.sql のコマンド実行をしない状態で、default-time-zone='Asia/Tokyo' をmy.iniに追記すると、MariaDBの起動時にエラーになり起動できません。my.iniへのdefault-time-zone='Asia/Tokyo' の追記は、timezone_posix.sql のコマンド実行後に実施します。
MariaDBの再起動
MariaDBを再起動します。管理ツールの[サービス]を起動します、下図のウィンドウが表示されます。サービスの一覧から"MySQL"の項目をクリックして選択します。
右クリックしてポップアップメニューを表示します。メニューの中の[再起動]をクリックします。
MySQLのサービスが再起動されます。
time_zone 値の確認
SQLのプロンプトから下記のコマンドを実行します。
show variables like '%time_zone%';
下記の結果が返ります。
+------------------+---------------+
| Variable_name | Value |
+------------------+---------------+
| system_time_zone | ???? (?W????) |
| time_zone | Asia/Tokyo |
+------------------+---------------+
2 rows in set (0.01 sec)
time_zone の値が "Asia/Tokyo" に設定されていればOKです。
参考:cactiuser アカウントに対するアクセス権の設定
Cactiを利用している場合は、cactiuser のアカウントが TimeZoneテーブルにアクセスできるよう下記のコマンドを実行します。
grant select on mysql.time_zone_name to 'cactiuser'@'localhost'
identified by '(cactiuser のパスワード)';
Linuxの場合
タイムゾーンテーブルの設定
Linuxの場合はタイムゾーンの設定がOSにインストールされているため、下記のコマンドを実行すればタイムゾーンの設定をデータベースに入力できます。
ターミナルコンソールから下記のコマンドを実行します。
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
my.cnf ファイルの変更
/etc/my.cnf ファイル、または、 /etc/my.cnf.d/ ディレクトリ内のcnfファイルを編集します。
cnfファイル内の mysqld セクションに "default-time-zone" を記述します。
MariaDBのバージョン10.2の場合は、/etc/my.cnf.d/server.cnf ファイルの[mysqld]セクションに記述するのが良いかもしれません。
cnf ファイルへの追記
[mysqld]
default-time-zone = 'Asia/Tokyo'
MariaDBの再起動
root権限で
systemctl restart mysql
コマンドを実行し、MariaDBを再起動します。
time_zone 値の確認
下記のコマンドを実行して、MySQLのSQLプロンプトを表示します。
mysql -u root -p
パスワード入力プロンプトが表示されますので、データベース(MariaDB)のrootのパスワードを入力します。
SQLのコマンドプロンプトが表示されます。
MySQLのプロンプトから下記のコマンドを実行します。
show variables like '%time_zone%';
下記の結果が返ります。
+------------------+---------------+
| Variable_name | Value |
+------------------+---------------+
| system_time_zone | JST |
| time_zone | Asia/Tokyo |
+------------------+---------------+
2 rows in set (0.01 sec)
time_zone の値が "Asia/Tokyo" に設定されていればOKです。
参考:cactiuser アカウントに対するアクセス権の設定
Cactiを利用している場合は、cactiuser のアカウントが TimeZoneテーブルにアクセスできるよう下記のコマンドを実行します。
grant select on mysql.time_zone_name to 'cactiuser'@'localhost'
identified by '(cactiuser のパスワード)';
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。