Wenn MySQL neu für Sie ist oder jemand schnell und mühelos eine MySQL-Datenbank installieren möchte, dann ist dieser Artikel genau das Richtige für Sie. In diesem Artikel lernen wir, wie man MySQL mit Docker und Docker Compose unter Linux einrichtet.
Beginnen wir damit, die Docker-Umgebung einzurichten, um den MySQL-Container zu starten.
1. Installieren Sie Docker
Bevor Sie den MySQL-Docker-Container hochfahren, müssen Sie docker und docker-compose auf Ihrem Computer installiert haben. Wenn Sie docker und docker-compose nicht installiert haben, lesen Sie die folgenden Anleitungen:
- So installieren Sie Docker in CentOS
- So installieren Sie Docker in Ubuntu
Sie können auch auf die unten angegebenen offiziellen Links zur Docker-Dokumentation verweisen, um zu erfahren, wie Docker und Docker Compose eingerichtet werden.
- https://docs.docker.com/engine/install/
- https://docs.docker.com/compose/install/
Sie können die folgenden Befehle ausführen, um die Docker- und Docker-Compose-Versionen zu überprüfen, mit denen Sie arbeiten.
$ docker --version Docker version 20.10.11, build dea9396
$ docker-compose --version docker-compose version 1.29.2, build unknown
2. Laden Sie das MySQL-Docker-Image herunter
Gehen Sie zum Docker Hub um das MySQL-Docker-Image zu erhalten . Das Wichtigste ist, dass Sie entscheiden müssen, welche Version von MySQL Sie ausführen möchten.
Führen Sie den folgenden Befehl aus, um das MySQL-Image vom Docker-Hub auf Ihren Computer zu ziehen.
$ docker pull mysql:latest
Kopf hoch :Es ist nicht notwendig, das Tag "latest
" zu verwenden ", wird standardmäßig das neueste Bild abgerufen.
Um zu überprüfen, ob das Bild lokal verfügbar ist, können Sie den folgenden Befehl ausführen:
$ docker images mysql
Beispielausgabe:
REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest b05128b000dd 12 days ago 516MB
Jetzt ist das Image bereit, den Container hochzufahren. Sie können diesen Schritt auch überspringen und den "docker run
" ausführen " Befehl wie im nächsten Abschnitt gezeigt, der das Image zieht, wenn es lokal nicht verfügbar ist.
3. Starten Sie den MySQL-Container
Führen Sie den folgenden Befehl aus, um den MySQL-Docker-Container hochzufahren:
$ docker run --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e "MYSQL_ROOT_PASSWORD=temp123" mysql
Lassen Sie uns den obigen Befehl aufschlüsseln und sehen, was jedes Flag tut.
--name
→ Um Ihrem Container einen Namen zu geben. Wenn Sie dieses Flag nicht angeben, weist Docker einige zufällig generierte Namen zu.
-p
→ Portzuordnung. MySQL lauscht auf Port 3306
also ordnen wir Ports zu (3306
→ 3306
) von Ihrem Hostcomputer zum Docker-Container. Es ist nicht erforderlich, dass der Host-Port 3306
ist , es kann alles sein, was verwendet werden kann.
Führen Sie den folgenden netstat
aus Befehl in Ihrem lokalen Computer, um zu prüfen, ob der zugeordnete Port lauscht oder nicht, sobald der Container gestartet wird.
$ netstat -tlnup | grep -i 3306
Beispielausgabe:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 168870/docker-proxy tcp6 0 0 :::3306 :::* LISTEN 168878/docker-proxy
-v
→ Bringen Sie ein Volumen am Behälter an. Das Standardverhalten von Docker ist, dass die Daten nach dem Entfernen des Containers nicht beibehalten werden, sodass Sie alle Ihre Daten verlieren.
Um dauerhaften Speicher zu erstellen, habe ich ein Volume mit dem Namen „mysql_volume
“ erstellt ". MySQL speichert die Daten in /var/lib/mysql/
innerhalb des Containers und hier wird es dem localhost-Verzeichnis /var/lib/docker/volumes/mysql_volume1/_data
zugeordnet , damit Ihre Daten persistent sind.
Wenn Sie mehr über Docker-Volumes erfahren möchten, lesen Sie unseren ausführlichen Artikel auf demselben.
-d
→ Startet und führt den Container im getrennten Modus aus. Wenn Sie das -d
weglassen Flag, dann sehen Sie die Container-Startprotokolle im Terminal und Sie müssen eine neue Terminalsitzung öffnen, um sich mit dem Container zu verbinden.
-e
→ Umgebungsvariablen. Sie müssen ein Mysql-Root-Benutzerpasswort einrichten mit einem der folgenden Parameter.
MYSQL_ROOT_PASSWORD
→ Richten Sie Ihr eigenes Passwort mit dieser Umgebungsvariable ein.MYSQL_ALLOW_EMPTY_PASSWORD
→ Es wird ein leeres oder Null-Passwort festgelegt. Sie müssenMYSQL_ALLOW_EMPTY_PASSWORD=1
setzen .MYSQL_RANDOM_ROOT_PASSWORD
→ Beim Start des Containers wird ein zufälliges Passwort generiert. Sie müssenMYSQL_RANDOM_ROOT_PASSWORD=1
setzen um das zufällige Passwort zu generieren.
Wenn Sie diesen Schritt überspringen, wird ein Fehler ausgegeben, wie unten gezeigt.
4. Überprüfen Sie den Status des MySQL-Containers
Sie können den Status des gestarteten Containers mit dem folgenden Befehl überprüfen:
$ docker ps
Beispielausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e1fb895f6f0f mysql "docker-entrypoint.s..." 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
5. Mit MySQL-Datenbank verbinden
Führen Sie den folgenden Befehl aus, um eine Verbindung zum MySQL-Container herzustellen.
$ docker exec -it mysql bash
Verbinden Sie sich als root
mit der MySQL-Datenbank Benutzer, indem Sie den folgenden Befehl ausführen. In meinem Fall habe ich mein eigenes Passwort über MYSQL_ROOT_PASSWORD
eingerichtet .
$ mysql -u root -p
Wenn Sie MYSQL_RANDOM_ROOT_PASSWORD=1
verwendet haben Beim Starten des Containers können Sie das automatisch generierte Passwort aus den Protokollen abrufen.
$ docker logs
$ docker logs mysql
Das automatisch generierte Root-Passwort ist lang und nicht zu merken. Sie können das Root-Passwort zurücksetzen, indem Sie die folgende Abfrage ausführen.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysqlpassword';
Ersetzen Sie das Passwort ‚mysqlpassword‘ durch Ihr eigenes Passwort. Sie können auch Ihren eigenen Benutzer erstellen und ihm nach Bedarf Berechtigungen erteilen.
6. Beispieldaten laden
Das Hauptziel beim Einrichten von mysql besteht darin, einige Daten zu laden und Abfragen darauf auszuführen. Es gibt verschiedene Möglichkeiten, die Daten zu laden. Ich habe eine Beispieldatei namens "load_data.sql
" mit den folgenden Abfragen darin.
CREATE DATABASE IF NOT EXISTS football; USE football; CREATE TABLE IF NOT EXISTS players ( player_name VARCHAR(16) NOT NULL, player_age INT NOT NULL, player_club VARCHAR(16) NOT NULL, player_country VARCHAR(16) NOT NULL ); INSERT INTO players VALUES ("Messi",34,"PSG","Argentina"); INSERT INTO players VALUES ("Ronaldo",36,"MANU","Portugal"); INSERT INTO players VALUES ("Neymar",29,"PSG","Brazil"); INSERT INTO players VALUES ("Kane",28,"SPURS","England"); INSERT INTO players VALUES ("E Hazard",30,"MADRID","Belgium");
Der erste Ansatz besteht darin, die Daten von der lokalen Maschine in den Docker-Container zu kopieren, indem die Datei "docker cp
" Befehl.
$ docker cp load_data.sql mysql:/tmp
$ docker exec -it mysql bash
$ ls -l /tmp/
Jetzt können Sie sich mit dem MySQL-Client verbinden und den Quellbefehl ausführen oder die Datei an den MySQL-Client umleiten.
$ mysql -u root -p
mysql> source /tmp/load_data.sql
Oder
$ mysql -u root -p < /tmp/load_data.sql
Verbinden Sie sich mit der Datenbank und fragen Sie Ihre Tabelle ab.
$ mysql -u root -p
mysql> show databases;
mysql> use football;
mysql> show tables;
mysql> select * from players;
Der zweite Ansatz wäre, die .sql
umzuleiten Datei beim Ausführen von docker exec
Befehl.
$ docker exec -i mysql mysql -u root -p < load_data.sql
7. MySQL-Container mit Docker-Compose einrichten
Anstatt das Image zu ziehen und den docker run
auszuführen Befehl können Sie docker-compose verwenden um den Container schnell hochzudrehen. Docker-compose ist am besten geeignet, wenn Sie mehr als einen Container erstellen müssen.
Erstellen Sie eine Datei namens docker-compose.yml
oder docker-compose.yaml
Datei. Kopieren Sie den folgenden YAML-Code und fügen Sie ihn ein. Dies ist dasselbe wie das, was ich in den vorherigen Abschnitten manuell ausgeführt habe.
version: '3.8' services: database: image: mysql:latest container_name: mysql environment: MYSQL_ROOT_PASSWORD: temp1234 ports: - "3306:3306" volumes: - mysql_volume:/var/lib/mysql volumes: mysql_compose_volume:
Führen Sie nun den folgenden Befehl aus, der den MySQL-Docker-Container hochfährt.
$ docker-compose up
Führen Sie den folgenden Befehl aus, um den Status des gestarteten Containers mit docker-compose zu überprüfen:
$ docker-compose ps
Beispielausgabe:
Name Command State Ports ------------------------------------------------------------------------------------------------- mysql docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp
8. Mit MySQL Workbench eine Verbindung zur MySQL-Datenbank herstellen
Bis jetzt haben wir gesehen, wie man mit dem MySQL-Client aus dem Container heraus eine Verbindung zur Datenbank herstellt. Sie können sich auch mit jedem GUI-Client wie mysql workbench, dbeaver, Heidi SQL usw. mit der Datenbank verbinden.
Unabhängig davon, welchen GUI-Client Sie verwenden, ist es wichtig zu beachten, welcher Port beim Starten des Containers zugeordnet wurde.
In meinem Fall habe ich localhost zugeordnet (3306
) -> Container (3306
). Wenn ich also eine Verbindung zur Datenbank herstellen muss, muss ich mich mit localhost:3306
verbinden oder 127.0.01:3306
.
Ich verwende MySQL Workbench als meinen GUI-Client. Wenn Sie MySQL Workbench nicht auf Ihrem Computer installiert haben, können Sie die folgende Anleitung verwenden, um dieselbe zu installieren.
8.1. Installieren Sie MySQL Workbench unter Linux
Navigieren Sie zur offiziellen Website um die Paketdatei herunterzuladen. Sie müssen Ihr Betriebssystem auswählen, um die .deb
herunterzuladen oder .rpm
Datei.
Im nächsten Schritt werden Sie aufgefordert, sich anzumelden oder anzumelden. Sie können die Anmeldung oder Anmeldung überspringen, indem Sie auf die Option „Nein danke, einfach meinen Download starten“ klicken.
Installieren Sie auf Debian-basierten Systemen MySQL Workbench wie folgt:
$ cd <path to downloaded .deb file>
$ sudo apt install ./mysql-workbench-community_8.0.27-1ubuntu21.04_amd64.deb
Installieren Sie auf RHEL-basierten Systemen MySQL Workbench wie folgt:
$ cd <path to downloaded .rpm file>
$ sudo dnf localinstall ./mysql-workbench-community-8.0.27-1.el8.x86_64.rpm
Sobald die Installation abgeschlossen ist, können Sie mysql workbench entweder über das Menü oder das Bindestrich starten.
Starten Sie MySQL Workbench
8.2. Mit MySQL-Datenbank verbinden
Stellen Sie eine Verbindung zu der Datenbank her, die in einem Docker-Container ausgeführt wird. Sie sollten versuchen, sich mit localhost:3306
zu verbinden oder localhost:<port-no>
je nachdem, wie Ihr Container eingerichtet ist.
Bevor Sie sich mit der Datenbank verbinden, können Sie auf "Verbindung testen" klicken ", um zu überprüfen, ob MySQL Workbench erfolgreich eine Verbindung zur Datenbankinstanz herstellen konnte.
Jetzt können Sie Ihre Abfragen für die von Ihnen erstellten Tabellen ausführen.
9. Fazit
In diesem Artikel haben wir kurz gesehen, wie man MySQL-Container in Docker mit docker run
startet und docker-compose
Methoden. Wenn Sie MySQL zu Test- oder Lernzwecken einrichten möchten, ist Docker mehr als ausreichend.
Hoffe das hilft.