Detaillierter Prozess zur Bereitstellung von MySQL mit Docker (allgemeine Anwendungen, die mit Docker bereitgestellt werden)

Detaillierter Prozess zur Bereitstellung von MySQL mit Docker (allgemeine Anwendungen, die mit Docker bereitgestellt werden)

Ich habe es Ihnen bereits vorgestellt: Docker (Bereitstellung allgemeiner Anwendungen): Docker Deploy Nginx

Docker stellt mysql:5.7.26 bereit

# Laden Sie das Image docker pull mysql:5.7.26 herunter

# Das Bild anzeigen docker images|grep mysql

# Starten Sie das Container-Image. Es wird empfohlen, den folgenden Docker-Run-Befehl unter /usr/local/workspace/mysql auszuführen: docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26

   # Es wird empfohlen, den Pfad fest zu codieren: docker run -p 13306:3306 --name my-mysql -v /usr/local/workspace/mysql/conf:/etc/mysql -v /usr/local/workspace/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26

Befehlserklärung:

-p 13306:3306 ordnet den Port 3306 des Containers dem Port 3306 des Hosts zu

--name my-mysql Der Container wird nach dem Start my-mysql genannt

-v $PWD/conf:/etc/mysql mountet das conf/-Verzeichnis im aktuellen Verzeichnis des Hosts in /etc/mysql des Containers (das conf-Verzeichnis ist die Konfigurationsdatei von MySQL, es ist in Ordnung, wenn es nicht gemountet ist)

-v $PWD/logs:/logs mountet das Logs-Verzeichnis unter dem aktuellen Verzeichnis des Hosts in /logs des Containers (das Logs-Verzeichnis ist das Log-Verzeichnis von MySQL und hat keine Wirkung, wenn es nicht gemountet ist)

-v $PWD/data:/var/lib/mysql mountet das Datenverzeichnis im aktuellen Verzeichnis des Hosts in das /var/lib/mysql des Containers (das Datenverzeichnis ist der Speicherpfad der für MySQL konfigurierten Datendateien. Es wird empfohlen, es zum Speichern von Daten zu mounten. Wenn der Container heruntergefahren wird, können die Daten erneut gemountet werden.)

-e MYSQL_ROOT_PASSWORD=123456 Initialisiert das Passwort des Root-Benutzers

Überprüfen des Startstatus des Containers

[xxx@xxx-xx-xxx mysql]# docker ps|grep mysql
5291ed3fe987 mysql:5.7.26 "docker-entrypoint.s?? vor 5 Minuten Up 5 Minuten 33060/tcp, 0.0.0.0:13306->3306/tcp my-mysql

Geben Sie den MySQL-Container ein

# Anmeldecontainer [root@cbov10-sso55-xxx ~]# docker exec -it my-mysql bash
root@5291ed3fe987:/# ls
bin dev entrypoint.sh home lib64 media opt root sbin sys usr
booten docker-entrypoint-initdb.d usw. lib logs mnt proc run srv tmp var
# Anmeldung mysqlroot@5291ed3fe987:/# mysql -uroot -p --default-character-set=utf8
Passwort eingeben: 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 2
Serverversion: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.

mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
+--------------------+
4 Zeilen im Satz (0,00 Sek.)

Einrichten der Remote-Anmeldung bei MySQL

mysql> mysql verwenden
Einlesen von Tabelleninformationen zur Vervollständigung von Tabellen- und Spaltennamen
Sie können diese Funktion deaktivieren, um einen schnelleren Start mit -A zu erhalten

Datenbank geändert
mysql> wähle Host, Benutzer aus Benutzer;
+-------------+------------------+
| Gastgeber | Benutzer |
+-------------+------------------+
| % | Wurzel |
| lokaler Host | mysql.session |
| lokaler Host | mysql.sys |
| lokaler Host | Wurzel |
| lokaler Host | Test |
+--------------+------------------+
5 Zeilen im Satz (0,00 Sek.)

# Richten Sie den Root-Benutzer so ein, dass er sich von überall aus remote anmelden kann und alle Betriebsberechtigungen für alle Bibliotheken hat. (Das Unternehmen darf dies nicht tun, da die Angriffsfläche zu groß ist.) Dies dient nur zu Testzwecken.
mysql> GEWÄHREN SIE ALLE PRIVILEGIEN FÜR *.* AN 'root'@'%', IDENTIFIZIERT DURCH '123456', MIT GRANT-OPTION;
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,00 Sek.)

# Berechtigungen aktualisierenmysql> FLUSH PRIVILEGES;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

# MySQL beenden 
mysql> beenden
Tschüss

Bezüglich der MySQL-Autorisierung können Sie Baidu selbst durchsuchen. Hier ist die Empfehlung

MySQL-Berechtigungsverwaltung

MySQL-Berechtigungskontrolle

Remote-Anmeldetest

Verwenden Sie das Datenbankverbindungstool, um eine Verbindung mit der Host-IP + dem vom Host freigegebenen Port herzustellen.

Als wir den Container vorhin gestartet haben, hat -p13306:3306 angezeigt, dass der Host-Port 13306 dem Port 3306 des Containers zugeordnet ist. Wenn unser Host, also die IP-Adresse des Servers, 10.10.10.11 ist

Die mit 10.10.10.11:13306 verbundene Datenbank sollte verbunden sein. Es wird empfohlen, zum Testen eine neue Testdatenbank wie folgt zu erstellen

Docker, MySQL-Neustartproblem (gehen die Daten verloren?)

# Container anzeigen [root@cbov10-sso55-113 mysql]# docker ps | grep mysql
5291ed3fe987 mysql:5.7.26 "docker-entrypoint.s?? vor 4 Stunden Up 4 Stunden 33060/tcp, 0.0.0.0:13306->3306/tcp my-mysql

# Stoppen Sie den Container (5291ed3fe987 ist die MySQL-Container-ID)
[root@cbov10-sso55-113 mysql]# Docker-Stop 5291ed3fe987
5291ed3fe987


# Container löschen [root@cbov10-sso55-113 mysql]# docker rm 5291ed3fe987
5291ed3fe987

Gehen Sie zu unserem ursprünglichen Mount-Verzeichnis, um dies zu überprüfen

Das Mount-Host-Verzeichnis ist /usr/local/workspace/mysql,

[root@cbov10-sso55-xxx mysql]# cd Daten/
[root@cbov10-sso55-xxx Daten]# ls
auto.cnf ca.pem Client-Key.pem ibdata1 ib_logfile1 Leistungsschema public_key.pem Server-Key.pem Test
ca-key.pem Client-Zertifikat.pem ib_buffer_pool ib_logfile0 MySQL private_key.pem Server-Zertifikat.pem sys

Die Datendateien sind noch da! Lassen Sie uns erneut ausführen

# Beachten Sie, dass das Verzeichnis mit dem gemounteten Host-Verzeichnis übereinstimmen muss. Der Befehl, der zum ersten Mal in /usr/local/workspace/mysql ausgeführt wird, sollte sich dieses Mal auch im selben Verzeichnis befinden. # Natürlich gibt es kein Problem, wenn Sie einen festen Pfad schreiben [root@cbov10-sso55-xxx mysql]# docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26
74c91431533ebb9bbfd3a1123b3f910f54770a08ad08c3c37cbbb996d29e0428

# Hier können wir sehen, dass sich die Container-ID geändert hat [root@cbov10-sso55-xxx mysql]# docker ps |grep mysql
74c91431533e mysql:5.7.26 "docker-entrypoint.s?? vor 16 Sekunden Up 15 Sekunden 33060/tcp, 0.0.0.0:13306->3306/tcp my-mysql

# Geben Sie den Container ein [root@cbov10-sso55-xxx mysql]# docker exec -it bash 74c91431533e
Fehler: Kein solcher Container: bash
[root@cbov10-sso55-xxx mysql]# docker exec -it 74c91431533e bash
root@74c91431533e:/#mysql -u root -p
Passwort eingeben: 
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 2
Serverversion: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.


mysql> Datenbanken anzeigen;
+--------------------+
| Datenbank |
+--------------------+
| Informationsschema |
|mysql |
| Leistungsschema |
|System|
| Prüfung |
+--------------------+
5 Zeilen im Satz (0,00 Sek.)

Habe festgestellt, dass die Testdatenbank auch vorhanden ist! Die Größe der Datendatei kann auch vor und nach dem Löschen des MySQL-Containers überprüft werden. Leser können es selbst ausprobieren.

Wenn die Hostdatei ordnungsgemäß gespeichert wird, gehen die Daten nicht verloren.

veranschaulichen:

Tatsächlich ist die Produktion viel komplizierter als dieser Test. Es ist wirklich schwierig, die Probleme von MySQL-Clustern, Master-Slaves, Datensynchronisation, Netzwerken usw. mit Docker zu lösen.

Die Verwaltung von MySQL-Containern oder die Verwaltung von Stateful-Anwendungen erfordert ein ausgefeilteres Tool, das berühmte Kubernetes-Projekt.

empfehlen

Offizielle Docker-Website

Offizielle Kubernetes-Website

Dies ist das Ende dieses Artikels über die Bereitstellung von MySQL durch Docker (Docker-Bereitstellung allgemeiner Anwendungen). Weitere verwandte Inhalte zur Bereitstellung von MySQL durch Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Stellen Sie das .Net6-Projekt im Docker bereit
  • Detaillierte Schritte zum Bereitstellen von Microsoft SQL Server mit Docker
  • Docker-Bereitstellung MySQL8-Cluster (ein Master und zwei Slaves) Implementierungsschritte
  • Prozessanalyse der Bereitstellung von ASP.NET Core-Anwendungen auf dem Linux-System Docker
  • Beispiel für die Bereitstellung von MySQL auf Docker
  • Stellen Sie Asp.Net Core (.Net6) in Docker unter Linux CentOS bereit
  • Vollständige Schritte zum Bereitstellen von Asp.net-Kernanwendungen mit Docker
  • Docker stellt Mysql, .Net6, Sqlserver und andere Container bereit

<<:  Verständnis und Beispielcode des Vue-Standardslots

>>:  So legen Sie einen gepunkteten Rahmen in HTML fest

Artikel empfehlen

Docker-Kern und spezifische Verwendung der Installation

1. Was ist Docker? (1) Docker ist ein Open-Source...

JavaScript implementiert Tab-Leisten-Umschalteffekte

Hier ist ein Fall, den Frontend-Entwickler kennen...

Detaillierte Erklärung des CSS3-Rotationswürfelproblems

3D-Koordinatenkonzept Wenn sich ein Element dreht...

Die Vor- und Nachteile von Nginx und LVS und ihre geeignete Nutzungsumgebung

Lassen Sie uns zu Beginn darüber sprechen, was La...

Erfahren Sie mehr über den Ereignisplaner EVENT in MySQL

Der Ereignisplaner in MySQL, EVENT, wird auch als...

Fallstricke bei der neueren Version des IDEA2021 Tomcat10-Servlets

Da die Version, die ich beim Lernen verwendet hab...

JS Canvas realisiert die Funktionen von Zeichenbrett und Signaturtafel

In diesem Artikel wird der spezifische Code von J...

So verwenden Sie Docker-Compose zum Erstellen eines ELK-Clusters

Auf alle Orchestrierungsdateien und Konfiguration...

Tiefgreifendes Verständnis des asynchronen Wartens in Javascript

In diesem Artikel untersuchen wir, warum async/aw...

CSS3-Implementierungscode für den kreisförmigen Fortschritts-Tick-Effekt

Inhaltsverzeichnis 8. Kreisförmiger Fortschritts-...