这篇博文主要说标题中提到的三个问题:1是linux环境下的大小写敏感问;2是docker环境下mysql配置文件修改后重启失败问题解决;3是连接数过多问题解决

进入容器,安装vim

因linux环境下mysql默认是大小写敏感的,想着就将它屏蔽了,但因为是在docker环境下,从而度娘得到上文,操作如下。

docker exec -it 容器名称(或者容器id) bash
apt-get update
apt-get install -y vim

#若顺利进入容器,则编辑my.cnf文件(/etc/mysql目录)
vi my.cnf
# 加上内容,设置为大小写不敏感
lower_case_table_names=1

mysql重启失败,解决重启问题

  1. 但是,修改完文件后,本来想通过docker restart 容器名称重启容器的,而docker ps表明容器没有启动成功。继而通过docker logs  -f --tail 10 容器名称查看日志信息,发觉是配置文件修改有误。。。而没有启动的容器是无法进入的,那如何修改配置文件呢?此时度娘得到这篇:docker+mysql 更改配置后重启不了的解决方案
    2.通过1.的文章,按照方案1操作,find / -name my.cnf,发觉有多个地方有,然后逐一打开,发觉都不是我的菜。。。方案1作废

3.通过1.的文章,按照方案2操作,通过docker cp命令,将容器中配置文件拷贝到主机,在主机编辑完成后,将配置文件覆盖到容器。但是这个操作,复制得到的my.cnf文件有问题,显示红色,没有考虑这个红色是啥意思,但明显是一个废弃文件。怎么办呢?

虽然方案2作废了,但是它给了我另外一个思路,我新建一个my.cnf的空文件传送到容器是否可以?(或者是在网上找一份初始的my.cnf文件),幸好,通过docker cp ./my.cnf 容器名称:/etc/mysql/my.cnf操作后,运行docker start 容器名称,最后docker ps,完美!

大小写敏感解决

这个问题解决之后,回归到大小写敏感问题,打开/etc/mysql/mysql.conf.d目录,修改配置文件,设置lower_case_table_names=1,重启后大小写问题已经屏蔽了。通过show global variables like 'lower%'; 命令查询lower_case_table_names取值(参考:mysql too many connections 解决方法https://www.jianshu.com/p/fc40067c4dc9),发觉取值已改变,至此,大小写敏感问题就屏蔽了。

大小写问题迁出的连接数问题

大小写设置后,需要重启mysql服务,但重启mysql服务后,发觉在命令行设置的max_connections参数变为了默认值。

show global variables like 'max_connections';
set global max_connections=1000;

从而需要修改配置文件。打开/etc/mysql/mysql.conf.d目录,修改配置文件,添加max_connections=1000,重启后在命令行查看最大连接数,设置的已生效。

docker下mysql时区问题

+ 失败操作(可跳过):在mysql命令行,通过使用show variables like '%zone%',查看默认获取时间为系统时间,按照度娘参考,修改my.cnf文件,设置default-time_zone='+8:00',重启后没有效果。

+ 成功操作:既然Mysql默认取得是系统时间,则只需修改该容器的系统时间即可。度娘得知,将主机的/etc/localtime文件复制到容器的/etc/localtime文件,通过 docker cp /etc/localtime 容器名称:/etc/localtime 操作,重启该容器(docker restart 容器名称),继而进入容器(docker exec -it 容器名称 bash),通过date查询到时间已同步到本地时间了。至此Mysql时区问题已解决。