Docker official mysql image custom configuration method

WBOY
Release: 2023-05-27 13:34:06
forward
1180 people have browsed it

Copy code The code is as follows:

$ docker run --name some-mysql -e mysql_root_password=my-secret-pw -d daocloud.io/mysql:tag

some-mysql The name of the container is specified, my-secret-pw specifies the password of the root user, and the tag parameter specifies the mysql version you want

This way the data is not persisted, so it needs to be mounted in the startup parameters Local directory

So the database keeps running like this, but because the program recently needs to support emoji expressions, the character set of mysql has to be changed.

Copy code The code is as follows:

$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e mysql_root_password=my-secret-pw -d daocloud.io/mysql:tag

At this time, you can mount the custom configuration file. The official document states that

When the mysql service starts, it will be /etc/mysql/my.cnf As a configuration file, this file will import all files with the .cnf suffix in the /etc/mysql/conf.d directory. These files extend or override the configuration in the /etc/mysql/my.cnf file. So you can create your own configuration file and mount it to the /etc/mysql/conf.d directory in the mysql container.

So the easiest way to change the database configuration is to create a new configuration file on the host machine and change it to utf8mb4

[client] default-character-set=utf8mb4 [mysqld] character-set-client-handshake = false character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci [mysql] default-character-set=utf8mb4
Copy after login

Then copy the file to the corresponding docker container folder

docker cp /home/my.cnf(宿主机文件路径) [容器id]:/etc/mysql/mysql.conf.d
Copy after login

Finally, use the docker stop and start commands to restart the container to load the custom configuration.

The container configured by the official mysql image of docker cannot start the problem

I am using the docker image of mysql. First create and start the image:

# docker run --name mysql-b \ > -p 33002:3306 -v /zc/mysql/datadir-b:/var/lib/mysql \ > -e mysql_root_password='123456' -d mysql:latest
Copy after login

Start normally, no problem. Usually when we use mysql, we need to set parameters. To set parameters, we must first enter the bash of the container and perform the operation:

docker exec -it mysql-b bash
Copy after login

The default configuration file of mysql is the /etc/mysql/my.cnf file. If you want to customize the configuration, it is recommended to create a .cnf file in the /etc/mysql/conf.d directory. The newly created file can be named arbitrarily, as long as the suffix is cnf. The configuration items in the newly created file can override the configuration items in /etc/mysql/my.cnf. Because the official docker image of mysql does not provide a vim editor, I used the cat command to generate the file and add the content:

# cat >test.cnf <
        
Copy after login

After exiting, I stopped the container and then restarted the container. I found that the container could not be started.

Solution

Delete the original container that cannot be started. Re-create a new container. The crux of the problem is that the original test.cnf file has errors. Find the last line of the original configuration file:

default-character-set=utf8
Copy after login

Delete this line. Just make sure there is no such line when adding the configuration file.

Cause of the problem

In the official docker image of mysql, under the label latest, there is no default-character-set in the [mysqld] configuration section this configuration item.
If you want to view all configuration items, you can use the following command and use the pipeline to put the output help into the help.txt file:

docker run -it --rm mysql:tag --verbose --help > help.txt
Copy after login

where tag represents the label of the image, such as latest and 5.6 .

The above is the detailed content of Docker official mysql image custom configuration method. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!