MySQL container crash after /etc/mysql/my.cnf change, how to edit back?

旧城冷巷雨未停 提交于 2021-02-17 05:27:29

问题


I changed some mysql config settings and set something wrong, now Docker container keeps restarting and I cannot find the my.cnf file to edit in host filesystem. I have tried aufs/diff folders but so far unable to find it. Also tried:

find / -name my.cnf -exec nano {} \;

But it does not bring up the file I changed. And I tried to change config.v2.json to start /bin/bash instead of mysqld and restarted docker, but yet it started mysqld (due supervisor or something?) using official mysql container image.


回答1:


I am seeing two possible solutions for your problem:

Bypass the ENTRYPOINT for the MySQL image

Find your image name by running docker images then run:

docker run -it --entrypoint="/bin/sh" OPTIONS image

That should take you to the bash inside the container and from there you can execute all the commands you want to find your my.cnf file. Although I don't know if editing the file from there, save it and try to run it again will works. I didn't tried.

Delete the old image and use the proper way to edit the my.cnf file

Find your image name by running: docker images and then delete it by running docker rmi <image_name>

Check the docs for the default MySQL images at MySQL Dockerhub is pretty straight on this and I quote:

Using a custom MySQL configuration file The MySQL startup

configuration is specified in the file /etc/mysql/my.cnf, and that file in turn includes any files found in the /etc/mysql/conf.d directory that end with .cnf. Settings in files in this directory will augment and/or override settings in /etc/mysql/my.cnf. If you want to use a customized MySQL configuration, you can create your alternative configuration file in a directory on the host machine and then mount that directory location as /etc/mysql/conf.d inside the mysql container.

If /my/custom/config-file.cnf is the path and name of your custom configuration file, you can start your mysql container like this (note that only the directory path of the custom config file is used in this command):

$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

This will start a new container some-mysql where the MySQL instance uses the combined startup settings from /etc/mysql/my.cnf and /etc/mysql/conf.d/config-file.cnf, with settings from the latter taking precedence.

From that point and if you create the my.cnf file on your host then you'll never run into this problem again since you can edit the file as many times as you want.



来源:https://stackoverflow.com/questions/42153759/mysql-container-crash-after-etc-mysql-my-cnf-change-how-to-edit-back

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!