MySQL5.7开始默认启用only_full_group_by选项,因而我在配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf)中加了mysql
SET sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
修改了docker容器中的配置信息,因为配置文件写错,或者配置文件格式错误等缘由,致使容器没法再次启动sql
docker容器的一些配置信息通常在var/lib/docker/overlay下面,咱们到此目录找到对应的配置,修改后便可从新启动docker
docker logs 容器名/容器id
ERROR: mysqld failed while attempting to check config command was: "mysqld --verbose --help" 2019-08-20T12:20:57.919628Z 0 [ERROR] unknown variable 'SET sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 2019-08-20T12:20:57.923248Z 0 [ERROR] Aborting ERROR: mysqld failed while attempting to check config command was: "mysqld --verbose --help" 2019-08-20T12:21:58.445399Z 0 [ERROR] unknown variable 'SET sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 2019-08-20T12:21:58.448990Z 0 [ERROR] Aborting
由错误可知我在配置文件配置了错误的参数 SET sql_mode=...
该参数是我配置在mysql容器配置文件 mysqld.cnf中的,因此咱们要找到该配置文件,而后将 SET sql_mode=... 删除ubuntu
mandy@ubuntu:~$ sudo find / -name mysqld.cnf /tmp/mysqld.cnf /var/lib/docker/overlay2/967bef783b7ae60e477382ac25f015793f8e3047f7bbca203759ed1ab1b2a661/diff/etc/mysql/mysql.conf.d/mysqld.cnf /var/lib/docker/overlay2/ddef71f08d9dc90ceb354850a89e59817c5e730b8fdea07f0916eb95e2637dce/diff/etc/mysql/mysql.conf.d/mysqld.cnf /var/lib/docker/overlay2/ddef71f08d9dc90ceb354850a89e59817c5e730b8fdea07f0916eb95e2637dce/merged/etc/mysql/mysql.conf.d/mysqld.cnf
备注:你可能会找到多个配置文件,好比你启动了多个mysql容器就会出现多个mysqld.cnf,找到对应你当前错误的mysqld.cnf而后修改重启。ide
把docker容器中的配置文件复制到主机中,而后再主机中修改,修改完成后再复制到docker容器中.net
docker cp 容器id:docker容器中配置文件路径 主机路径 docker cp 2f9845c5e47810a984c5e2ae5a5e5c1e041a746079682e6b464089ca1b1c5fc2:/etc/mysql/mysql.conf.d/mysqld.cnf /tmp/mysqld.cnf
docker cp 主机文件路径 容器id:docker容器中配置文件路径 docker cp /tmp/mysqld.cnf 2f9845c5e47810a984c5e2ae5a5e5c1e041a746079682e6b464089ca1b1c5fc2:/etc/mysql/mysql.conf.d/mysqld.cnf
两种方法都可以解决容器在没法启动的状况下,修改容器中的配置文件。我的比较推荐使用第二种方法,主要知道是哪一个配置文件便可复制到主机中,自由修改。日志
参考:code