Ubuntu服务器上MySQL的Pacific/Fiji时区提前一小时的修正方法求助
修正Ubuntu服务器上MySQL的Pacific/Fiji时区偏差问题
既然服务器本身的Pacific/Fiji时区显示正常,只有MySQL出问题,那咱们可以从几个更精准的方向排查,之前全量导入时区数据没生效的话,试试下面的步骤:
先确认MySQL当前的时区配置
登录MySQL执行这条命令,看看全局和会话时区的设置:SELECT @@global.time_zone, @@session.time_zone;如果显示是
SYSTEM,理论上应该和服务器时区同步,但可能是MySQL的时区数据文件有异常,导致解析Pacific/Fiji时区出错。单独导入Pacific/Fiji的时区数据
全量导入所有时区有时候会因为某些文件损坏或权限问题失败,咱们单独导入目标时区试试:mysql_tzinfo_to_sql /usr/share/zoneinfo/Pacific/Fiji | mysql -u root -p mysql执行时输入root密码即可,这个命令会把Fiji的时区数据精准写入MySQL的mysql库中。
必须重启MySQL服务
时区数据导入后,一定要重启MySQL才能让新的时区数据生效:sudo systemctl restart mysql手动指定MySQL的全局时区
重启后登录MySQL,手动设置全局和当前会话的时区,确保即时生效:-- 设置全局时区,所有新会话都会用这个设置 SET GLOBAL time_zone = 'Pacific/Fiji'; -- 设置当前会话的时区,马上生效 SET time_zone = 'Pacific/Fiji';配置永久生效(避免重启后还原)
为了防止MySQL重启后时区又变回原来的样子,修改MySQL的配置文件:- 找到配置文件位置,Ubuntu一般是
/etc/mysql/mysql.conf.d/mysqld.cnf或者/etc/my.cnf - 打开文件,在
[mysqld]段落下添加一行:default-time-zone = 'Pacific/Fiji' - 保存后再次重启MySQL服务:
sudo systemctl restart mysql
- 找到配置文件位置,Ubuntu一般是
验证修复结果
最后执行两条命令对比:- 服务器端执行:
date - MySQL中执行:
SELECT NOW();
两者的时间应该完全一致,就说明时区问题解决了。
- 服务器端执行:
内容的提问来源于stack exchange,提问作者P K
相关产品推荐
相关产品推荐

