把mysql放在docker容器里,给m

北京中科医院亲身经历 https://m.39.net/pf/a_5057514.html

最近遇到一个问题:执行mysql查询脚本的时候,区分了大小写。为了解决这个问题,我们修改了msyql的配置文件,添加新配置lower_case_table_names=1。这个配置项的作用是取消数据库查询的大小区分。重启了mysql的docker容器,查询的时候还是区分大小写,参数没有起作用。

开始一度怀疑是配置文件映射的不对。排查思路是:

查看创建mysql容器的脚本,找到配置文件的映射路径,然后检查容器外和容器里的配置是否一致。具体过程是:

获取到创建脚本,找到容器的映射路径,容器外的配置文件配置没有问题。检查容器里的配置:

dockerps显示docker容器列表,目的是获取到mysqldocker的容器id

dockerexec-it容器id/bin/bash

cd/etc/mysql查看mysql容器里的默认配置文件路径

catmysql.sql查看mysql配置文件

默认配置文件下又指定了两个配置文件的路径,分别是:

!includedir/etc/mysql/conf.d/

!includedir/etc/mysql/mysql.conf.d/

我们在创建容器的时候映射的路径是:

/home/env/mysql/config:/etc/mysql/mysql.conf.d这个映射路径是对的。

既然配置文件是正确的,为什么重启还不生效呢?稍后说,先说如何解决。

既然参数不生效,那就只有一个办法,在创建容器的脚本中,添加参数项。命令是:

执行命令,重新创建容器,问题解决。

修改配置文件为什么不生效的问题,刚好有个同事研究过这个问题。

结论是:在centos(x86)下的docker容器里的mysql的配置文件指定的路径!includedir/etc/mysql/mysql.conf.d/下的mysql.conf的参数是不生效的;但!includedir/etc/mysql/conf.d/这个路径下是生效的,所以创建docker容器的时候,要把路径映射到!includedir/etc/mysql/conf.d/这个路径下。在arm架构下,生效的文件是!includedir/etc/mysql/mysql.conf.d/。具体为什么会出现这种情况,就不知道了,等以后有机会查下。

感谢大家的阅读,我是星光依旧灿烂,欢迎点赞


转载请注明:http://www.aierlanlan.com/grrz/8103.html