墨西哥没有按计划在2023年4月恢复使用夏令时(DST);相反,该国家/地区将全年采用标准时间。
目前,我在连接到 Aurora MySQL(版本 3)的商业智能工具 (Metabase) 中定义的查询中使用命名时区,我无法更新
mysql
数据库中的时区表以获取本地时间戳正确。
数据:
id | 创建于 |
---|---|
1 | 2023-05-15 22:59:55.211225 |
示例查询:
select
id,
convert_tz(created_at, "UTC", "America/Mexico_City") as local_created_at
from items;
输出(使用过期区域偏移量
-05:00
计算,夏令时):
id | local_created_at |
---|---|
1 | 2023-05-15 17:59:55.211225 |
预期输出(使用区域偏移量
-06:00
,标准时间):
id | local_created_at |
---|---|
1 | 2023-05-15 14:59:55.211225 |
作为我应用任何未决维护的第一步,Aurora 引擎升级到版本 3.03.1 并且底层操作系统也被更新。然后,我按照 MySQL 8.0 参考手册(Populating the Time Zone Tables)中描述的说明进行操作,并总结如下:
将 zoneinfo 目录路径名传递给 mysql_tzinfo_to_sql 并将输出发送到 mysql 程序中。
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -h <db-host> -u <master-user> -p mysql
上述命令使用 zoneinfo 数据库(描述时区的文件集)并生成作为输入传递给 mysql 程序的 sql 语句。
我执行命令后,出现如下错误:
第 1 行的错误 1044 (42000):用户“user1”@“%”对数据库“mysql”的访问被拒绝
然后我阅读了有关Aurora MySQL 特权模式的信息,它提出了以下内容:
使用 Aurora MySQL 版本 3,您无法直接修改
数据库中的表。特别是,您不能通过插入mysql
表来设置用户。相反,您使用 SQL 语句来授予基于角色的权限。您也不能在mysql.user
数据库中创建其他类型的对象,例如存储过程。您仍然可以查询mysql
表。mysql
注意:
user1
是master用户账号,我验证过用户有rds_superuser_role