Windows以外はいつかやった時に書く・・・つもり
Windows
- 環境
- Windows10 Pro バージョン1909
- Server version: 8.0.19 MySQL Community Server - GPL
- 参考 : MariaDB (MySQL) のタイムゾーン、タイムゾーンテーブルを設定する
本当はsystem_time_zone
をJSTに設定したかったがわからず・・・
設定前
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set, 1 warning (0.03 sec)
方法
- MySQL :: Time zone description tablesを表示する
- [POSIX standard]のzipファイルをダウンロードする
- 今回ダウンロードしたのはtimezone_2020b_posix_sql.zip
- zipファイルを任意の場所に解凍する
- zipから出てきた
timezone_posix.sql
をデータベースmysql
に対して実行する- うっかり自分が使っているDBを指定すると
ERROR 1146 (42S02) at line 1: Table 'mydb.time_zone' doesn't exist
と怒られる
- うっかり自分が使っているDBを指定すると
- my.iniの
[mysqld]
にdefault-time-zone = 'Asia/Tokyo'
を追記する - MySQLを再起動する
# zipファイルを任意の場所に解凍する
$ unzip /c/Users/ponsuke/Downloads/timezone_2020b_posix_sql.zip -d /c/apps/mysql-8.0.19-winx64/
Archive: /c/Users/ponsuke/Downloads/timezone_2020b_posix_sql.zip
creating: /c/apps/mysql-8.0.19-winx64/timezone_2020b_posix_sql/
inflating: /c/apps/mysql-8.0.19-winx64/timezone_2020b_posix_sql/timezone_posix.sql
# zipから出てきたtimezone_posix.sqlを実行する(GitBashは対話できないのでパスワードを直指定)
$ mysql -u root -D mysql -ppassword < /c/apps/mysql-8.0.19-winx64/timezone_2020b_posix_sql/timezone_posix.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
# my.iniに追記する
$ cat /c/apps/mysql-8.0.19-winx64/my.ini
[mysqld]
default-time-zone = 'Asia/Tokyo'
# ...省略...
# MySQLを再起動する
$ sc stop MySQL80
SERVICE_NAME: MySQL80
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x1
WAIT_HINT : 0x5265c00
$ sc start MySQL80
SERVICE_NAME: MySQL80
TYPE : 10 WIN32_OWN_PROCESS
STATE : 2 START_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x3
WAIT_HINT : 0x3a98
PID : 7756
FLAGS :
# GitBashを使っているのでwinptyをつけて接続
$ winpty mysql -u ponsuke -D mydb -p
Enter password: *******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like '%time_zone%';
+------------------+------------+
| Variable_name | Value |
+------------------+------------+
| system_time_zone | |
| time_zone | Asia/Tokyo |
+------------------+------------+
2 rows in set, 1 warning (0.01 sec)