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