一、查询当前时区
AWS RDS默认采用UTC格林尼治标准时间,中国位于东八区,因此中国本地时间是UTC+8。
查询当前时区的办法是,登录到EC2,通过MySQL命令行连接到RDS,并执行如下命令:
show variables where Variable_name like 'time_zone';
查询结果如下截图。

可以看到本RDS数据库是UTC时区。
二、调整RDS时区
RDS时区的调整是通过参数组。因此首先确认当前RDS再用的参数组是不是default参数组。AWS不允许修改default参数组。因此要新建一个参数组,设置好timezone,然后将RDS正在使用的参数组进行变更,切换到新创建的参数组上。
在RDS页面左侧,进入参数组菜单,点击右侧的新建参数组。在选择参数组模版位置,选择默认的mysql 5.7,然后新建一个新的参数组。注意,如果当前已经正在使用别的参数组,这里也可以选择其他自定义参数组,从而将修改过的参数继承过来。
编辑这个新创建的参数组,搜索关键字 time_zone,然后可以看到如下搜索结果。选中名为time_zone的参数,然后修改为 Asia_Shanghai 即为北京时间。如下截图。

修改完成后,保存参数组。
进入到当前正在运行的RDS数据库,点击编辑,在参数组下拉框中,选择刚修改过时区的参数组。如下截图。

修改参数组的最后一步,系统提示是否立刻应用修改。这里选择立刻修改或者下一个维护窗口都可以。因为修改时区是需要reboot重启实例才生效的,因此无论选择哪一个参数,都没有影响,稍后都要额外重启数据库实例。这里选择下一个停机窗口重启。如下截图。

返回数据库实例清单界面,选择重启数据库实例。
需要注意的是,数据库只有在运行状态(绿色的Available)下才可以重启。如果是正巧也修改了其他设置,数据库状态显示“修改中”(Modifying)这时候是不能重启的,需要等待3-5分钟,状态回到绿色的Available状态下,才可以执行重启。如下截图。

至此数据库修改时区完成。
三、验证修改生效
重启数据库实例完成后,使用ssh连接到数据库,执行如下命令。
show variables where Variable_name like 'time_zone';
查询结果如下。

可以看到修改时区成功。