使用环境变量设置时区:
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ="Asia/Shanghai" \
-p 3306:3306 \
mysql:latest
通过设置 `TZ` 环境变量,你可以指定容器的时区。图示例中,设置时区为上海时间。
使用 MySQL 配置文件:
[mysqld]
default-time-zone='Asia/Shanghai'
在 MySQL 的配置文件中,你可以通过 `default-time-zone` 指定时区。这种方式适用于在启动后仍需调整时区的情况。
如何查看当前时区:
SELECT @@global.time_zone, @@session.time_zone;
运行上述 SQL 命令便可以查看全局和会话的时区配置。如果你设置为 `Asia/Shanghai`,则查询的结果应准确反映这一点。
首先,在 Docker 容器中执行以下 SQL 语句来临时更改时区:
SET GLOBAL time_zone = 'Asia/Shanghai';
但注意,这样的更改并不会持久保存,容器重启后时区会恢复到默认设置。为了永久更改,你应考虑修改 MySQL 配置文件或者通过环境变量重新启动容器。
如何选择合适的时区?选择时区时,可以优先使用 UTC,特别是对于需要在全球范围内使用的应用。如果你的应用面向特定地区的用户,则选择该地区的标准时区会更加合适。例如,如果大部分用户在中国,那么 `Asia/Shanghai` 将是不错的选择。
如果在容器中运行的应用出现时间问题,该如何排查?首先,需要检查 MySQL 的时区设置是否正确。随后,确认应用代码是否正确处理时区。如果数据库时区设置是 UTC,但应用程序以本地时区进行操作,可能导致时间不一致。因此,确保应用程序和数据库的一致性至关重要。