GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So richten Sie MySQL mit Docker unter Linux ein

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 (33063306 ) 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üssen MYSQL_ALLOW_EMPTY_PASSWORD=1 setzen .
  • MYSQL_RANDOM_ROOT_PASSWORD → Beim Start des Containers wird ein zufälliges Passwort generiert. Sie müssen MYSQL_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.


Docker
  1. So richten Sie Pure-FTPD mit MySQL unter CentOS und RedHat ein

  2. So richten Sie LogAnalyzer mit Rsyslog und MySQL ein

  3. Richten Sie Nextcloud mit Redis mit Docker ein

  4. So installieren Sie Jenkins mit Docker

  5. So richten Sie Opencart auf Rocky Linux/Centos 8 mit Apache, PHP, Mysql (LAMP Stack) ein

So richten Sie eine Firewall mit Gufw auf einem Linux-Desktop ein

So ersetzen Sie Docker durch Podman auf einem Mac

So installieren Sie Docker CE unter Linux Mint 20

So richten Sie Traefik Load Balancer mit Docker in Ubuntu 20.04 ein

Cron Vs Anacron:So richten Sie Anacron unter Linux ein (mit einem Beispiel)

So richten Sie Logstash unter Linux mit ElasticSearch, Redis, Nginx ein