UTCのママ使って、プログラム側で毎回設定してもいいけれど、今までの別の
システムで動かしていた物を移設となると、なるべく既存の物に手を入れたくないのが人情
サポートに問い合わせつつ、解決の目を見たので、備忘録兼ねて
----------------------------------------------------------------------------
状況を再現させる
0,)ふつうにRDSのインスタンスを作る
どんなスペックでもかまわないです。
TimezoneがUTC固定のため、日本時間-9:00になっている
1,)Timezoneを変更するストアドを作る
-- 格納するデータベースをさくせい
mysql> CREATE DATABASE shared;
-- すとあど
mysql> DELIMITER |
CREATE PROCEDURE shared.`store_time_zone`()
IF NOT (POSITION('rdsadmin@' IN CURRENT_USER()) = 1) THEN
SET SESSION time_zone = 'Asia/Tokyo';
END IF |
Query OK, 0 rows affected (0.01 sec)
-- 適用
mysql> DELIMITER ;
-- 確認
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2014-08-19 08:25:59 |
+---------------------+
1 row in set (0.02 sec)
-- 読んでみる
mysql> CALL shared.store_time_zone;
Query OK, 0 rows affected (0.10 sec)
-- 日本時間で表示されていることを確認
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2014-08-19 17:26:08 |
+---------------------+
1 row in set (0.02 sec)
-- 参考サイト様
http://dev.classmethod.jp/cloud/aws/change-timezone-on-amazon-rds-mysql/
2,)ユーザーを作ってみる
GRANT ALL PRIVILEGES ON `%`.* TO 'testuser'@'%' IDENTIFIED BY 'testuser' WITH GRANT OPTION;
3,)再現チェック
$ mysql -utestuser -p -h <RDS_Endpoint>
mysql> show databases;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 1195762
Current database: *** NONE ***
ERROR 1184 (08S01): Aborted connection 1195762 to db: 'unconnected' user: 'testuser' host: '111.222.111.222' (init_connect command failed)
4,)EXECUTE権限をユーザに付与
RDS構築時の管理ユーザでmysqlへログイン
mysql> grant execute on *.* to 'testuser'@'%';
5,)変更かくにん
mysql> SELECT * FROM mysql.user\G
====================
Execute_priv: Y
====================
6,)動作確認
$ mysql -utestuser -p -h <RDS_Endpoint>
mysql> show databases;
+------------------------+
| Database |
+------------------------+
| information_schema |
| innodb |
| testdb |
| mysql |
| performance_schema |
| shared |
| tmp |
+------------------------+
19 rows in set (0.00 sec)
-----------------
なおった!
0 件のコメント:
コメントを投稿