由于项目部署的时候,两台linux服务器,并且加上数据库,但是后面在程序使用new date()时候,发现时间比当前时间晚13h,后面排查原因是时区导致的,故修改数据库时区和服务器时区。

修改服务器时区

tzselect命令

使用tzselect命令设置上海时区Asia/Shanghai。

  1. tzselect
  2. 选择对应的 5 9 1 1

修改服务器时区和数据库时区 - 图1
修改服务器时区和数据库时区 - 图2

修改localtime文件

cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改服务器时区和数据库时区 - 图3
4.将当前时间和日期写入BIOS,避免重启后失效

hwclock -w

修改服务器时区和数据库时区 - 图4

timedatectl

# 设置时区
timedatectl set-timezone Asia/Shanghai

#查看时区
timedatectl

a591dcfa541874e8bde32612ed33a32.jpg

修改mysql时区

永久修改时区

通过修改mysql的配置文件my.ini配置或者my.cnf文件

# vim /etc/my.cnf ##在[mysqld]区域中加上
  default-time_zone = '+8:00'
# /etc/init.d/mysqld restart ##重启mysql使新时区生效

临时修改时区

> set global time_zone = '+8:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区
> set time_zone = '+8:00'; ##修改当前会话时区
> flush privileges; #立即生效

查看mysql时区

> select curtime();  #或select now()也可以
+-----------+
| curtime() |
+-----------+
| 15:18:10 |
+-----------+
> show variables like "%time_zone%";
+------------------+--------+
| Variable_name  | Value |
+------------------+--------+
| system_time_zone | CST  |
| time_zone    | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)

time_zone说明mysql使用system的时区,system_time_zone说明system使用CST时区
以下图片是修改正确的时区
04785d20563cafbd0ec3d5b2ba53d95.jpg