**
前情简介:
**
由于在docker中安装的mysql5.7中区分表的大小写,进入到mysql的命令行模式之后就修改配置文件,主要修改
lower_case_table_names=1
修改之后就启动再也启动不起来了,说我配置文件改错了
2022-11-25 14:47:54+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.saFZWm1Kpy
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 25!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
2022-11-25 14:50:14+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.iyJzMo87UW
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 25!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
2022-11-25 15:45:39+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.7fGok4zsnQ
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 25!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
2022-11-25 16:49:08+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.m1iwv7bEFF
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 25!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
2022-11-25 16:53:49+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.WdeF98eP3C
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 25!
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
因为当时修改的docker客户端管理软件中mysql窗口修改的就是my.cnf。当我修改完重新启动后mysql就再也启动不起来了,提示我修改文件报错。这个时候container不启动的话,再也进不了命令行模式,也就修改不了那个配置文件了。难道就没有其他办法了么。不,下面就是我的解决办法。
**
解决问题
**
首先我们先找到docker下mysql的配置文件在什么位置,执行如下命令
docker inspect mysql5.7
如上图所示就是我们需要找的文件,在这个文件路径下去找mysql的配置文件和我们在命令行窗口中的文件大致一样。
"UpperDir": "/var/lib/docker/overlay2/1b11908b2e44ea27138e56e7e2361205af2b570fb1c42ea0a1a9cd4a107f1e64/diff"
但是同样还是会存在一个问题,就是如果直接在Windows下找这个文件路径是找不到的。因为docker在Windows下依赖的wsl的linux环境。
我们需要在资源管理器中输入以下命令,资源管理器也就是我们的文件管理,在地址栏里输入即可
\\wsl$\docker-desktop-data
如上图所示我们就进入到docker的wsl虚拟环境了,接下来我们就一层一层的往里找就可以了。
\\wsl$\docker-desktop-data\data\docker\overlay2
以上的路径和我们的一开始要找的文件路径稍微有点区别,我们一开始/var/lib/docker下,现在是在/data/docker下。
/var/lib/docker/overlay2/1b11908b2e44ea27138e56e7e2361205af2b570fb1c42ea0a1a9cd4a107f1e64/diff
我们一层一层向下找,如下图所示。
到这里我们就找到mysql的配置文件,但是这个配置文件和docker中mysql的命令行模式下的配置稍微不一样,但确实就是这个文件,我们打开看一下这个文件的内容是和my.cnf完全一样。
正好就是我们添加的哪行,然后我们暂时先把这个配置删除后,就可以正常启动了。
这里为什么修改配置文件会导致mysql启动不起来,是因为我们修改错了,我按照一下添加俩行就可以正常启动了。
[mysqld]
lower_case_table_names=1