Detaillierte Erläuterung der benutzerdefinierten Konfiguration des offiziellen Docker-MySQL-Image

Detaillierte Erläuterung der benutzerdefinierten Konfiguration des offiziellen Docker-MySQL-Image

Um Installationszeit zu sparen, habe ich zum Starten von MySQL das offizielle MySQL-Docker-Image verwendet.

passieren

Kopieren Sie den Code wie folgt:
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mein-geheimes-pw -d daocloud.io/mysql:tag

some-mysql gibt den Namen des Containers an, my-secret-pw gibt das Kennwort für den Root-Benutzer an und der Tag-Parameter gibt die gewünschte MySQL-Version an.

Auf diese Weise sind die Daten nicht persistent, daher muss das lokale Verzeichnis in den Startparametern bereitgestellt werden.

Die Datenbank lief bisher so, aber da das Programm neuerdings Emoji-Ausdrücke unterstützen muss, muss ich den Zeichensatz von MySQL ändern.

Kopieren Sie den Code wie folgt:
$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mein-geheimes-pw -d daocloud.io/mysql:tag

Zu diesem Zeitpunkt können Sie die benutzerdefinierte Konfigurationsdatei mounten, das offizielle Dokument erklärt

Beim Starten des MySQL-Dienstes wird /etc/mysql/my.cnf als Konfigurationsdatei verwendet. Diese Datei importiert alle Dateien mit der Endung .cnf in das Verzeichnis /etc/mysql/conf.d. Diese Dateien erweitern oder überschreiben die Konfiguration in der Datei /etc/mysql/my.cnf. Sie können also Ihre eigenen Konfigurationsdateien erstellen und sie im Verzeichnis /etc/mysql/conf.d im MySQL-Container bereitstellen.

Der einfachste Weg, die Datenbankkonfiguration zu ändern, besteht darin, eine neue Konfigurationsdatei auf dem Host zu erstellen und sie in utf8mb4 zu ändern.

[Kunde]

Standardzeichensatz = utf8mb4


[mysqld]

Zeichensatz-Client-Handshake = FALSE

Zeichensatzserver = utf8mb4

Sortierserver = utf8mb4_unicode_ci

[mysql]
Standardzeichensatz = utf8mb4

Anschließend kopieren Sie die Datei in den entsprechenden Docker-Container-Ordner

docker cp /home/my.cnf (Hostdateipfad) [Container-ID]:/etc/mysql/mysql.conf.d

Verwenden Sie abschließend die Docker-Befehle „Stop“ und „Start“, um den Container neu zu starten und die benutzerdefinierte Konfiguration zu laden.

Der mit dem offiziellen MySQL-Image von Docker konfigurierte Container kann nicht gestartet werden

Ich verwende das Docker-Image von MySQL. Zuerst das Image erstellen und starten:

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

Normal gestartet, keine Probleme. Normalerweise müssen wir Parameter festlegen, wenn wir MySQL verwenden. Um die Parameter festzulegen, müssen wir zuerst die Bash des Containers aufrufen und Folgendes tun:

docker exec -it mysql -b bash

Die Standardkonfigurationsdatei für MySQL ist die Datei /etc/mysql/my.cnf. Wenn Sie die Konfiguration anpassen möchten, wird empfohlen, eine .cnf-Datei im Verzeichnis /etc/mysql/conf.d zu erstellen. Die neu erstellte Datei kann beliebig benannt werden, solange die Endung cnf lautet. Die Konfigurationselemente in der neu erstellten Datei können die Konfigurationselemente in /etc/mysql/my.cnf überschreiben. Da das offizielle Docker-Image von MySQL den Vim-Editor nicht bereitstellt, verwende ich den Befehl cat, um die Datei zu generieren und Inhalt hinzuzufügen:

# Katze >test.cnf <<EOF
[mysqldump]
Benutzer=root
Passwort='123456'
[mysqld]
max_allowed_package=8M
Kleinbuchstabentabellennamen = 1
Zeichensatzserver = utf8
max_verbindungen=900
max_connect_errors=600
Standardzeichensatz = utf8
Ende der Laufzeit

Stoppen Sie den Container nach dem Beenden und starten Sie ihn neu. Stellen Sie dann fest, dass der Container nicht gestartet werden kann.

Problemumgehung

Löschen Sie den ursprünglichen Container, der nicht gestartet werden kann. Erstellen Sie einen neuen Container. Der Schlüssel zum Problem liegt darin, dass die ursprüngliche Datei test.cnf einen Fehler enthält. Suchen Sie die letzte Zeile der ursprünglichen Konfigurationsdatei:

Standardzeichensatz = utf8

Löschen Sie diese Zeile. Achten Sie beim Hinzufügen der Konfigurationsdatei darauf, dass eine solche Zeile nicht vorhanden ist.

Ursache

Im offiziellen Docker-Image von MySQL gibt es unter dem Tag „latest“ im Konfigurationsabschnitt [mysqld] kein Konfigurationselement für den Standardzeichensatz.
Wenn Sie alle Konfigurationselemente anzeigen möchten, können Sie mit dem folgenden Befehl die Pipeline verwenden, um die Ausgabehilfe in die Datei help.txt einzufügen:

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

Das Tag gibt die Bezeichnung des Bildes an, z. B. „neueste“ und „5.6“.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Docker-Erstellung eines MySQL-Images und des automatischen Installationsskripts
  • Detaillierte Erklärung zur Verwendung des Mysql-Image unter Docker
  • Detaillierte Erläuterung der Verwendung von Dockerfile zum Erstellen eines MySQL-Images und zum Implementieren der Dateninitialisierung und Berechtigungseinstellung
  • Installieren und verwenden Sie das MySQL-Image auf Docker
  • So erstellen Sie ein MySQL-Image mit Dockerfile

<<:  Tutorial zur Installation von MySQL 5.6 mit RPM in CentOS

>>:  JavaScript zum Filtern von Arrays

Artikel empfehlen

So sichern Sie MySQL-Kontoinformationen elegant

Vorwort: Ich bin kürzlich auf das Problem der Ins...

js canvas realisiert kreisförmige Wasseranimation

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erläuterung der ersten Erfahrungen mit Vue3.0 + TypeScript + Vite

Inhaltsverzeichnis Projekterstellung Projektstruk...

Führen Sie die Schritte aus, um mit Samba Ordner in CentOS 7 freizugeben

Vorwort Samba ist eine kostenlose Software, die d...

Vier Methoden zur Datentypbeurteilung in JS

Inhaltsverzeichnis 1. Art von 2. Instanz von 3. K...

Detaillierte Erläuterung der CSS-Randüberlappung und Lösungssuche

Ich habe kürzlich einige CSS-bezogene Wissenspunk...

Detaillierte Erklärung zum MySQL-Index

Inhaltsverzeichnis 1. Index-Grundlagen 1.1 Einlei...

Verwendung des Linux-Telnet-Befehls

1. Einleitung Der Befehl Telnet dient zur Anmeldu...

HTML-Basis-URL-Tag

Seine Funktion besteht darin, einen globalen Stil ...

So installieren Sie den RabbitMQ-Server mit Yum auf CentOS

Socat muss vor der Installation von rabbitmq inst...

MySQL-Grundlagen - Kurzanleitung - Wissenszusammenfassung (mit Mindmap)

Inhaltsverzeichnis Vorwort 1. Grundkenntnisse der...