[LINUX] Docker mysql Quick Reference Japanische Übersetzung

Japanische Übersetzung von Kurzanleitung für MySQL auf Docker Hub.

Was ist MySQL?

MySQL ist die beliebteste Open Source-Datenbank der Welt. Mit seiner nachgewiesenen Leistung, Zuverlässigkeit und Benutzerfreundlichkeit ist MySQL die erste Wahl für webbasierte Anwendungen, die die gesamte Palette persönlicher Projekte und Websites, E-Commerce- und Informationsdienste abdecken. .. Es wird auch in Web-Eigenschaften wie Facebook, Twitter, YouTube und Yahoo! verwendet. Weitere Informationen zu MySQL Server und anderen MySQL-Produkten sowie zugehörige Downloads finden Sie unter www.mysql.com.

Verwendung des Bildes

Starten Sie die MySQL-Serverinstanz

Das Starten einer MySQL-Instanz ist einfach.

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

some-mysql ist der Name, den Sie dem Container zuweisen, my-secret-pw ist das Kennwort, das Sie für den MySQL-Root-Benutzer festgelegt haben, und tag ist das Tag, das die erforderliche MySQL-Version angibt. In der obigen Liste finden Sie verwandte Tags. Stellen Sie über den MySQL-Befehlszeilenclient eine Verbindung zu MySQL her. Der folgende Befehl startet eine andere MySQL-Containerinstanz und führt den MySQL-Befehlszeilenclient für den ursprünglichen MySQL-Container aus, damit Sie SQL-Anweisungen für die Datenbankinstanz ausführen können.

$ docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p

some-mysql ist der Name des ursprünglichen Mysql-Containers ( some-network, der an das Docker-Netzwerk angeschlossen ist). Dieses Image kann auch als Client für Nicht-Docker-Instanzen oder Remote-Instanzen verwendet werden.

$ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p

Weitere Informationen zum MySQL-Befehlszeilenclient finden Sie in der MySQL-Dokumentation.

Verwendung über Docker Stack Deploy oder Docker Compose

stack.Beispiel für eine yml-Beschreibung


# Use root/example as user/password credentials
version: '3.1'

services:

  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

Führen Sie docker stack deploy -c stack.yml mysql (oder docker-compose -f stack.yml up) aus und warten Sie, bis es vollständig initialisiert ist http: // swarm-ip Gehen Sie zu: 8080, http: // localhost: 8080 oder http: // host-ip: 8080.

Zugriff auf Container-Shells und Anzeigen von MySQL-Protokollen

Sie können den Befehl in einem Docker-Container mit dem Befehl docker exec ausführen. Die folgende Befehlszeile enthält eine Bash-Shell im MySQL-Container.

$ docker exec -it some-mysql bash

Protokolle sind in den Docker-Containerprotokollen verfügbar.

$ docker logs some-mysql

Verwenden einer benutzerdefinierten MySQL-Konfigurationsdatei

Die Standardeinstellungen für MySQL befinden sich in / etc / mysql / my.cnf. Dies kann zusätzliche Verzeichnisse wie / etc / mysql / conf.d und / etc / mysql / mysql.conf.d enthalten. Überprüfen Sie die relevanten Dateien und Verzeichnisse im MySQL-Image, um weitere Informationen zu erhalten. Wenn / my / custom / config-file.cnf der Pfad und Name der benutzerdefinierten Konfigurationsdatei ist, können Sie den MySQL-Container wie folgt starten (mit diesem Befehl ist nur der Verzeichnispfad der benutzerdefinierten Konfigurationsdatei verfügbar: Bitte beachten Sie, dass es verwendet wird).

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

Dies ermöglicht der MySQL-Instanz, eine Kombination der Starteinstellungen von / etc / mysql / my.cnf und / etc / mysql / conf.d / config-file.cnf mit der letzteren Konfiguration zu verwenden Startet einen neuen Container, some-mysql, der Vorrang hat.

Einstellungsmethode, die die cnf-Datei nicht verwendet

Viele Konfigurationsoptionen können als Flags an mysqld übergeben werden. Dies gibt Ihnen die Flexibilität, den Container anzupassen, ohne dass eine cnf-Datei erforderlich ist. Wenn Sie beispielsweise die Standardcodierung und -kollatierung für alle Tabellen ändern möchten, um UTF-8 (utf8mb4) zu verwenden, führen Sie einfach den folgenden Befehl aus:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Wenn Sie die vollständige Liste der verfügbaren Optionen anzeigen möchten, gehen Sie wie folgt vor:

$ docker run -it --rm mysql:tag --verbose --help

Umgebungsvariable

Sie können die Konfiguration Ihrer MySQL-Instanz anpassen, indem Sie eine oder mehrere Umgebungsvariablen in der Befehlszeile "Docker Run" übergeben, wenn Sie das MySQL-Image starten. Beachten Sie, dass keine der folgenden Variablen Auswirkungen hat, wenn Sie den Container in einem Datenverzeichnis starten, das bereits eine Datenbank enthält. Die vorhandene Datenbank wird beim Starten des Containers nicht immer geändert. Zur Dokumentation von Umgebungsvariablen, die MySQL selbst respektiert, insbesondere von Variablen wie MYSQL_HOST, von denen bekannt ist, dass sie bei Verwendung mit diesem Image Probleme verursachen, https://dev.mysql.com/ Siehe auch doc / refman / 5.7 / de / environment-variables.html.

MYSQL_ROOT_PASSWORD

Diese Variable ist erforderlich und gibt das Kennwort an, das für das MySQL-Root-Superuser-Konto festgelegt wurde. Im obigen Beispiel ist es auf "my-secret-pw" gesetzt.

MYSQL_DATABASE

Diese Variable ist optional. Sie können den Namen der Datenbank angeben, die beim Starten des Images erstellt wird. Wenn ein Benutzer / Passwort angegeben wird (siehe unten), erhält dieser Benutzer Superuser-Zugriff auf diese Datenbank (entsprechend "GRANT ALL").

MYSQL_USER, MYSQL_PASSWORD

Diese Variablen sind optional. Wird in Kombination verwendet, um einen neuen Benutzer zu erstellen und ein Kennwort für diesen Benutzer festzulegen. Diesem Benutzer werden Superuser-Berechtigungen (siehe oben) für die Datenbank gewährt, die durch die Variable MYSQL_DATABASE angegeben wird. Beide Variablen sind erforderlich, um einen Benutzer zu erstellen. Beachten Sie, dass Sie diesen Mechanismus nicht verwenden müssen, um einen Root-Superuser zu erstellen. Der Root-Superuser wird standardmäßig mit dem in der Variablen MYSQL_ROOT_PASSWORD angegebenen Kennwort erstellt.

MYSQL_ALLOW_EMPTY_PASSWORD

Dies ist eine optionale Variable. Wenn Sie einen nicht leeren Wert festlegen, z. B. "Ja", kann der Container als Root-Benutzer ohne Kennwort gestartet werden.

Hinweis: Das Setzen dieser Variablen auf "Ja" wird nur empfohlen, wenn Sie wirklich verstehen, was Sie tun. Dies schützt Ihre MySQL-Instanz vollständig und ermöglicht jedem den vollständigen Zugriff auf Superuser.

MYSQL_RANDOM_ROOT_PASSWORD

Dies ist eine optionale Variable. Stellen Sie einen nicht leeren Wert wie "Ja" ein, um ein zufälliges Anfangskennwort für den Root-Benutzer zu generieren (mit "pwgen"). Das generierte Root-Passwort wird auf stdout gedruckt (GENERATED ROOT PASSWORD: ......).

MYSQL_ONETIME_PASSWORD

Wenn die Initialisierung abgeschlossen ist, wird der Root-Benutzer (nicht der von [MYSQL_USER](# mysql_user-mysql_password) angegebene Benutzer) als abgelaufen festgelegt und die Kennwortänderung bei der ersten Anmeldung erzwungen. Diese Einstellung wird aktiviert, wenn ein nicht leerer Wert vorliegt.

Hinweis: Diese Funktion wird nur in MySQL 5.6 und höher unterstützt. Die Verwendung dieser Option in MySQL 5.5 löst während der Initialisierung einen Fehler aus.

MYSQL_INITDB_SKIP_TZINFO

Standardmäßig lädt das Einstiegspunktskript automatisch die Zeitzonendaten, die für die Funktion CONVERT_TZ () erforderlich sind. Wenn dies nicht erforderlich ist, wird durch Angabe eines nicht leeren Werts das Lesen der Zeitzone deaktiviert.

Docker Secrets

Anstatt vertrauliche Informationen über Umgebungsvariablen zu übergeben, fügen Sie den obigen Umgebungsvariablen "_FILE" hinzu, damit das Initialisierungsskript die Werte dieser Variablen aus den Dateien lädt, die sich im Container befinden. Ich kann. Dies kann insbesondere verwendet werden, um das Kennwort aus dem Docker-Geheimnis zu laden, das in der Datei / run / Secrets / <Sekretname> gespeichert ist. Zum Beispiel:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag

Derzeit wird dies nur für die folgenden Variablen unterstützt:

Neue Instanz initialisieren

Beim ersten Start des Containers wird eine neue Datenbank mit dem angegebenen Namen erstellt und mit den angegebenen Konfigurationsvariablen initialisiert. Es werden auch Dateien mit den Erweiterungen .sh, .sql und .sql.gz ausgeführt, die sich in / docker-entrypoint-initdb.d befinden. Die Dateien werden in alphabetischer Reihenfolge ausgeführt. Sie können den MySQL-Dienst einfach auffüllen, indem Sie einen SQL-Speicherauszug in diesem Verzeichnis bereitstellen und ein benutzerdefiniertes Image mit den bereitgestellten Daten bereitstellen. Standardmäßig werden SQL-Dateien in die Datenbank importiert, die durch die Variable MYSQL_DATABASE angegeben wird.

Datenspeicherort

Wichtiger Hinweis: Es gibt verschiedene Möglichkeiten, die Daten zu speichern, die von Anwendungen verwendet werden, die in Docker-Containern ausgeführt werden. Benutzer des MySQL-Bildes werden aufgefordert, sich mit den verfügbaren Optionen vertraut zu machen:

Lassen Sie Docker die Speicherung von Datenbankdaten verwalten, indem Sie Datenbankdateien mithilfe der eigenen internen Datenträgerverwaltung auf Datenträger auf dem Hostsystem schreiben. Dies ist die Standardeinstellung und für den Benutzer einfach und ziemlich transparent. Der Nachteil ist, dass Tools und Anwendungen, die direkt auf dem Hostsystem ausgeführt werden, dh außerhalb des Containers, möglicherweise schwer zu finden sind. Erstellen Sie ein Datenverzeichnis auf dem Hostsystem (außerhalb des Containers) und hängen Sie es in ein Verzeichnis ein, das innerhalb des Containers sichtbar ist. Dadurch werden die Datenbankdateien an einem bekannten Speicherort auf dem Hostsystem abgelegt, sodass Tools und Anwendungen auf dem Hostsystem problemlos auf die Dateien zugreifen können. Der Nachteil ist, dass der Benutzer sicherstellen muss, dass das Verzeichnis vorhanden ist und dass die Verzeichnisberechtigungen des Hostsystems und andere Sicherheitsmechanismen korrekt eingestellt sind.

Die Docker-Dokumentation ist ein guter Ausgangspunkt, um die verschiedenen Speicheroptionen und -varianten zu verstehen, und es gibt mehrere Blog- und Forenbeiträge, die in diesem Bereich diskutieren und beraten. Hier finden Sie eine kurze Beschreibung der grundlegenden Schritte für die letztere Option.

Erstellen Sie ein Datenverzeichnis wie "/ my / own / datadir" auf dem entsprechenden Volume auf dem Hostsystem. Starten Sie den MySQL-Container wie folgt:

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

Der -v / my / own / datadir: / var / lib / mysql Teil des Befehls führt das Verzeichnis / my / own / datadir vom zugrunde liegenden Hostsystem zum / var im Container. Mounte als / lib / mysql. MySQL schreibt standardmäßig Datendateien. Es wird keine Verbindung hergestellt, bis die MySQL-Initialisierung abgeschlossen ist. Wenn beim Start des Containers keine Datenbank initialisiert wird, wird eine Standarddatenbank erstellt. Dies ist das erwartete Verhalten, bedeutet jedoch, dass eingehende Verbindungen erst nach Abschluss der Initialisierung akzeptiert werden. Dies kann zu Problemen führen, wenn automatisierte Tools wie Docker-Compose verwendet werden, mit denen mehrere Container gleichzeitig gestartet werden. Wenn die Anwendung, die versucht, eine Verbindung zu MySQL herzustellen, die MySQL-Ausfallzeit nicht verarbeitet oder auf den erfolgreichen Start von MySQL wartet, müssen Sie vor dem Start des Dienstes eine Verbindung herstellen und eine Wiederholungsschleife wiederholen. .. Ein Beispiel für eine solche Implementierung finden Sie in WordPress oder Bonita im offiziellen Bild.

Verwendung für vorhandene Datenbanken

Wenn Sie die MySQL-Containerinstanz in einem Datenverzeichnis starten möchten, das bereits eine Datenbank enthält (insbesondere ein Unterverzeichnis "MySQL"), lassen Sie die Variable "$ MYSQL_ROOT_PASSWORD" in der Ausführungsbefehlszeile weg. Selbst wenn die obige Variable angegeben wird, wird sie ignoriert und die vorhandene Datenbank wird nicht geändert.

So führen Sie einen Benutzer aus

Sie müssen mysqld ausführen, wenn Sie wissen, dass die Verzeichnisberechtigungen bereits richtig festgelegt sind (z. B. wenn Sie wie oben beschrieben für eine vorhandene Datenbank ausgeführt werden) oder wenn Sie mysqld mit einer bestimmten UID / GID ausführen möchten. In diesem Fall können Sie dieses Bild mit --user aufrufen. Stellen Sie einen beliebigen Wert (außer root / 0) ein, um die gewünschte Verbindung / Konfiguration zu erzielen.

$ mkdir data
$ ls -lnd data
drwxr-xr-x 2 1000 1000 4096 Aug 27 15:54 data
$ docker run -v "$PWD/data":/var/lib/mysql --user 1000:1000 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Erstellen eines Datenbank-Dumps

Die meisten der üblichen Tools funktionieren, aber ihre Verwendung kann etwas kompliziert sein, um Ihnen den Zugriff auf den mysqld-Server zu ermöglichen. Eine einfache Möglichkeit, dies zu überprüfen, besteht darin, "Docker Exec" zu verwenden und das Tool wie folgt aus demselben Container auszuführen:

$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

Datenwiederherstellung aus Speicherauszugsdatei

Zur Datenwiederherstellung. Sie können den Befehl docker exec mit dem Flag -i wie folgt verwenden:

$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql

Lizenz

Zeigen Sie die Lizenzinformationen für die in diesem Bild enthaltene Software an. Wie bei allen Docker-Images handelt es sich hierbei um direkte oder indirekte Abhängigkeiten von anderer Software, die möglicherweise unter anderen Lizenzen steht (z. B. Bash in der Basisdistribution). Beziehung) kann ebenfalls enthalten sein. Einige zusätzliche Lizenzinformationen, die automatisch erkannt werden könnten, befinden sich möglicherweise im Verzeichnis mysql / des Repo-Info-Repositorys. In Bezug auf die Verwendung eines vorgefertigten Bildes liegt es in der Verantwortung des Bildbenutzers, sicherzustellen, dass die Verwendung dieses Bildes den entsprechenden Lizenzen aller darin enthaltenen Software entspricht.

Recommended Posts

Docker mysql Quick Reference Japanische Übersetzung
Dockerfile Reference Japanische Übersetzung
Docker helfen japanische Übersetzung
Docker Build - Hilfe japanische Übersetzung
Docker run --help japanische Übersetzung
Japanische Übersetzung des Apache Spark-Dokuments - Schnellstart
sosreport Japanische Übersetzung
Mann systemd japanische Übersetzung
stromlinienförmige Erklärung japanische Übersetzung
Streamlit Tutorial Japanische Übersetzung
man systemd.service Japanische Übersetzung
man nftables Japanische Übersetzung
docker-compose --help japanische Übersetzung
Japanische Übersetzung des sysstat-Handbuchs
Japanische Übersetzung des Linux-Handbuchs