docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker MySQL配置不生效

Docker下MySQL配置文件不生效的解决方法(超全面!)

作者:清妍_

在Docker中运行MySQL并遇到需要调整配置的情况时,比如想要关闭ONLY_FULL_GROUP_BY的严格模式,我们可以通过以下步骤来实现sql_mode的修改:以下是解决此类问题的步骤和思路,需要的朋友可以参考下

问题描述

在Docker中运行MySQL并遇到需要调整配置的情况时,比如想要关闭ONLY_FULL_GROUP_BY的严格模式,我们可以通过以下步骤来实现sql_mode的修改:以下是解决此类问题的步骤和思路。

解决思路

1. 查看MySQL配置文件位置

首先,需要确定MySQL的配置文件在容器中的位置。

ls /etc/mysql/
ls /etc/mysql/mysql.conf.d/
cat /etc/my.cnf

my.cnf配置详解

my.cnf是MySQL的主配置文件,其中包含了数据库服务器的各种设置。my.cnf文件中可能包含!include指令,该指令用于包含其他配置文件或配置节。

重要!!!!需要排查所有可能的配置文件,确认是否有其他配置文件修改或覆盖了sql_mode

2. 确认Docker映射的文件(本人就在这一步踩坑了!!!)

如果在宿主机上修改了配置文件,但未将其映射到Docker容器中,修改将不会生效。检查Docker容器映射的文件:

docker inspect [容器ID或名称]

重要!!!!修改的配置文件都是宿主机上的/etc/my.cnf,但是并没有将其映射到docker容器中,所以一直失效。

查看容器的详细信息,确认卷挂载情况。

3. 将宿主机上的mysql配置文件映射到docker中

要将宿主机上的MySQL配置文件映射到Docker容器中,你需要执行以下步骤:

docker run -v /etc/mysql/my_custom.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf:ro \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw \
  --name my-mysql-container \
  mysql:tag

4. 修改配置文件

修改配置文件时,确保更改放在正确的配置节下。例如,修改sql_mode应该在[mysqld]节下:

[mysqld]
sql_mode = NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

5. 重启Docker容器

修改配置文件后,需要重启Docker容器以使更改生效:

docker ps 
docker restart [容器ID或名称]

6. 验证配置

进入MySQL并验证sql_mode

docker exec -it [容器ID或名称] mysql -uroot -p

登录MySQL后,执行:

SHOW VARIABLES LIKE 'sql_mode';

ok,完美解决

注意事项

通过以上步骤,你可以有效地解决Docker中MySQL配置不生效的问题,并根据需要调整sql_mode或其他配置。

到此这篇关于Docker下MySQL配置文件不生效的解决方法(超全面!)的文章就介绍到这了,更多相关Docker MySQL配置不生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文