Maison  >  Article  >  base de données  >  Méthode de configuration personnalisée de l'image mysql officielle de Docker

Méthode de configuration personnalisée de l'image mysql officielle de Docker

WBOY
WBOYavant
2023-05-27 13:34:061201parcourir

Copier le code Le code est le suivant :

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

some-mysql précise le nom du conteneur, my-secret -pw spécifie le mot de passe de l'utilisateur root et le paramètre tag spécifie la version de mysql souhaitée

De cette façon, les données ne sont pas conservées, le répertoire local doit donc être monté dans les paramètres de démarrage

Donc la base de données continue de fonctionner, mais en raison de récents problèmes, le programme doit prendre en charge les expressions emoji et le jeu de caractères de MySQL doit être modifié.

Copier le code Le code est le suivant :

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

Vous pouvez monter le fichier de configuration personnalisé à ce moment-là. La documentation officielle indique

Lorsque le service mysql sera démarré, /etc/mysql/my.cnf sera utilisé comme fichier de configuration, et ce fichier sera utilisé. être importé dans /etc/mysql/conf.d Tous les fichiers du répertoire avec le suffixe .cnf. Ces fichiers étendent ou remplacent la configuration dans le fichier /etc/mysql/my.cnf. Par conséquent, vous pouvez créer votre propre fichier de configuration et le monter dans le répertoire /etc/mysql/conf.d du conteneur mysql.

Donc, le moyen le plus simple de modifier la configuration de la base de données est de créer un nouveau fichier de configuration sur la machine hôte et de le changer en 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

Copiez ensuite le fichier dans le dossier du conteneur Docker correspondant

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

Enfin, utilisez le docker stop et les commandes de démarrage pour redémarrer le conteneur Implémentation du chargement de la configuration personnalisée.

Le conteneur configuré par l'image mysql officielle de docker ne peut pas démarrer

J'utilise l'image docker de mysql. Créez et démarrez d'abord l'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

Démarrez normalement, pas de problème. Habituellement, lorsque nous utilisons MySQL, nous devons définir des paramètres. Pour définir les paramètres, il faut d'abord saisir le bash du conteneur et effectuer l'opération :

docker exec -it mysql-b bash

Le fichier de configuration par défaut de mysql est le fichier /etc/mysql/my.cnf. Si vous souhaitez personnaliser la configuration, il est recommandé de créer un fichier .cnf dans le répertoire /etc/mysql/conf.d. Le fichier nouvellement créé peut être nommé arbitrairement, à condition que le suffixe soit cnf. Les éléments de configuration du fichier nouvellement créé peuvent remplacer les éléments de configuration dans /etc/mysql/my.cnf. Parce que l'image docker officielle de mysql ne fournit pas d'éditeur vim, j'ai utilisé la commande cat pour générer le fichier et ajouter le contenu :

# cat >test.cnf <<eof
[mysqldump]
user=root
password=&#39;123456&#39;
[mysqld]
max_allowed_packet=8m
lower_case_table_names=1
character_set_server=utf8
max_connections=900
max_connect_errors=600
default-character-set=utf8
eof

Après avoir quitté, j'ai arrêté le conteneur puis redémarré le conteneur, j'ai trouvé que le conteneur pouvait. ne soit pas démarré.

Solution

Supprimez le conteneur d'origine qui ne peut pas être démarré. Recréez un nouveau conteneur. Le nœud du problème est que le fichier test.cnf d'origine contient des erreurs. Retrouvez la dernière ligne du fichier de configuration d'origine :

default-character-set=utf8

Supprimez cette ligne. Assurez-vous simplement qu'il n'y a pas de ligne de ce type lors de l'ajout du fichier de configuration.

Cause du problème

Dans l'image Docker officielle de MySQL, sous l'étiquette Latest, il n'y a aucun élément de configuration de jeu de caractères par défaut dans la section de configuration [mysqld].
Si vous souhaitez afficher tous les éléments de configuration, vous pouvez utiliser la commande suivante et utiliser le pipeline pour placer l'aide de sortie dans le fichier help.txt :

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

où la balise représente la balise d'image, telle que Latest et 5.6.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer