mysql 通过客户端执行now()函数,时差为8小时

文章讲述了如何处理MySQL时间显示比北京时间晚8小时的问题。解决方案是在my.cnf配置文件中添加default-time-zone=Asia/Shanghai,由于MySQL是通过Docker安装且配置文件已挂载,因此直接修改主机上的挂载文件即可,无需进入容器。在完成配置修改后,重启Docker容器使更改生效,时间显示恢复正常。
摘要由CSDN通过智能技术生成

1.场景演示

假设当前北京时间是:2023-02-17 19:31:37。明显执行出来的结果和实际时间晚8小时。
所用Mysql版本为:

解决方式:
需要在my.conf文件中的[mysqld]下添加

default-time-zone=Asia/Shanghai 

由于这个mysql8.0是通过 docker 安装的,当时配置文件采用的是挂载的方式。所以不需要进入mysql容器内修改配置。修改挂载文件就行。修改完重启容器会自动同步到mysql容器内。
查看mysql 容器挂载目录:

最右侧的那一列是容器名:此次我们需要修改配置的是名为mysql8.0的mysql容器。

[root@iZ2Aeffpfo87fi4m4dlxo8dZ conf]# docker inspect mysql8.0 | grep Mounts -A 24
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mysql8.0/conf",
                "Destination": "/etc/mysql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mysql8.0/data",
                "Destination": "/var/lib/mysql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/mysql8.0/logs",
                "Destination": "/var/log/mysql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }

根据 查询可以知道挂载目录在/mysql8.0/conf下

[root@iZ0zafdax87fw9m4dlx78dZ conf]# vim my.cnf 

[mysqld]
default-time-zone=Asia/Shanghai  #添加这一行
user=mysql
bind-address=0.0.0.0
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
lower_case_table_names=1
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

保存,然后重启 docker restart mysql8.0。
然后再执行SELECT NOW(),CURDATE(),CURTIME(); 可以看到时间已经变成北京时间了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值