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

 更新时间:2024年09月25日 10:47:37   作者:清妍_  
在Docker中运行MySQL并遇到需要调整配置的情况时,比如想要关闭ONLY_FULL_GROUP_BY的严格模式,我们可以通过以下步骤来实现sql_mode的修改:以下是解决此类问题的步骤和思路,需要的朋友可以参考下

问题描述

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

解决思路

1. 查看MySQL配置文件位置

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

  • 查看配置文件的默认位置: linux中MySQL的配置文件通常位于/etc/mysql//etc/mysql/mysql.conf.d//etc/my.cnf。你可以直接查看这些目录:
ls /etc/mysql/
ls /etc/mysql/mysql.conf.d/
cat /etc/my.cnf

my.cnf配置详解

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

  • !include /path/to/other.cnf:这条指令告诉MySQL服务器包含另一个配置文件,使得配置更加模块化。

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

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

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

docker inspect [容器ID或名称]

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

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

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

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

  • 准备宿主机上的配置文件: 确保你的宿主机上有一个MySQL的配置文件,比如 my_custom.cnf。你可以将这个文件放置在任何你喜欢的目录下,比如 /etc/mysql/

  • 创建Docker容器时挂载配置文件: 使用 docker run 命令来启动一个新的容器,并使用 -v 参数来映射宿主机上的配置文件到容器内部。例如:

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
  • 在这个命令中:

  • -v /etc/mysql/my_custom.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf:ro 参数将宿主机上的 /etc/mysql/my_custom.cnf 文件挂载到容器的 /etc/mysql/mysql.conf.d/mysqld.cnf 位置,并设置为只读(:ro)。

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服务器按预期运行。

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

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

相关文章

  • docker exec使用-it操作图文详解

    docker exec使用-it操作图文详解

    这篇文章主要介绍了docker exec使用-it操作的相关资料,主要是使用 docker exec -it CONTAINER_ID bash命令进入正在运行的Docker容器的终端,并保持终端的输入形式,需要的朋友可以参考下
    2025-03-03
  • 详解如何获取docker容器(container)的ip地址

    详解如何获取docker容器(container)的ip地址

    这篇文章主要介绍了详解如何获取docker容器(container)的ip地址,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 在Docker中开发Java 8 Spring Boot应用程序的方法

    在Docker中开发Java 8 Spring Boot应用程序的方法

    在本文中,我将向您展示如何使用Java 8开发和运行简单的Spring Web应用程序,而无需在本地计算机上安装Java 8。感兴趣的朋友跟随小编一起看看吧
    2019-10-10
  • centos6使用docker部署redis主从数据库操作示例

    centos6使用docker部署redis主从数据库操作示例

    这篇文章主要介绍了centos6使用docker部署redis主从数据库操作,结合实例形式分析了centos6环境下docker部署redis主从数据库相关命令与使用技巧,需要的朋友可以参考下
    2020-02-02
  • 基于Docker的MySQL主从复制环境搭建的实现步骤

    基于Docker的MySQL主从复制环境搭建的实现步骤

    这篇文章主要介绍了基于Docker的MySQL主从复制环境搭建的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 安装docker-ce报错yum仓库错误问题及解决

    安装docker-ce报错yum仓库错误问题及解决

    安装Docker-CE时,可能会因依赖软件版本不足导致报错,解决方法包括使用yum update更新软件包,若仓库无该包则需更新repo源,也可通过yum install -y docker-ce --skip-broken跳过依赖更新直接安装,若遇yum命令执行报错
    2024-11-11
  • docker配置修改阿里云镜像仓库的实现

    docker配置修改阿里云镜像仓库的实现

    这篇文章主要介绍了docker配置修改阿里云镜像仓库的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • k8s手动拉取docker镜像的方法示例

    k8s手动拉取docker镜像的方法示例

    docker是一种便捷的容器化解决方案,它可以通过拉取镜像的方式轻松地部署和管理应用程序,本文主要介绍了k8s手动拉取docker镜像的方法示例,感兴趣的可以了解一下
    2024-02-02
  • 在Docker容器中运行Nginx的详细教程

    在Docker容器中运行Nginx的详细教程

    Nginx 是一款高性能 Web 服务器,常被用作反向代理、负载均衡器以及内容缓存,当你将 Nginx 运行在 Docker 容器中时,还能进一步获得可移植性、快速部署和更整洁的管理体验,本教程将带你从零开始学习如何使用 Docker 部署 Nginx,需要的朋友可以参考下
    2025-10-10
  • 使用Docker部署Filestash文件管理器的实现步骤

    使用Docker部署Filestash文件管理器的实现步骤

    Filestash是一款功能强大的网络文件管理工具,它允许用户在单一界面下管理分布于不同地点和平台的数据,本文就来介绍一下Docker部署Filestash文件管理器的实现步骤,感兴趣的可以了解一下
    2025-07-07

最新评论