Detaillierte Konfiguration des mysql8.x-Docker-Remotezugriffs

Detaillierte Konfiguration des mysql8.x-Docker-Remotezugriffs

Umweltbedingungen

MySQL 8.x wird über Docker bereitgestellt und die Startdatei docker-compose.yml lautet wie folgt:

Version: "3.2"
Leistungen:
    MySQL:
        Containername: MySQL
        Bild: "mysql:8.0"
        Häfen:
            - „3306:3306“
        Befehl:
            [
                "--character-set-server=utf8mb4",
                „--collation-server=utf8mb4_unicode_ci“,
                "--sql_mode=STRICT_TRANS_TABLES,KEIN_NULLDATUM,FEHLER_FÜR_DIVISION_DURCH_NULL,KEINE_ENGINE_SUBSTITUTION",
            ]
        Bände:
            - Typ: binden
              Quelle: ./mysql
              Ziel: /var/lib/mysql
            - Typ: binden
              Quelle: ./mysql-docker.cnf
              Ziel: /etc/mysql/conf.d/docker.cnf
        Umfeld:
            - MYSQL_RANDOM_ROOT_PASSWORD=ja
            -MYSQL_USER=meinBenutzer
            -MYSQL_PASSWORD=meinPasswort
            -MYSQL_DATABASE=meineDatenbank
        Neustart: immer

Wenn Sie den Befehl „Docker-Compose“ zum ersten Mal starten, wird das MySQL 8.x-Image automatisch heruntergeladen.

Nach dem erfolgreichen Start können Sie sehen, dass auch Port 3306 zugeordnet ist.

An diesem Punkt ist MySQL normal installiert und gestartet.​

Aufgetretene Fehler

Als nächstes stellte sich heraus, dass beim Herstellen einer Verbindung zum MySQL-Server über einen Datenbank-Client wie Navicat überhaupt keine Verbindung hergestellt werden konnte. Folgende Fehlertypen traten auf:

  1. FEHLER 1045 (28000): Zugriff für Benutzer „myuser“ verweigert
  2. 10060 Fehler
  3. 10061 Fehler

Problemumgehung

Es gibt im Internet viele Methoden, um das Problem des Fernzugriffs durch das Festlegen von Datenbankbenutzerberechtigungen zu lösen, aber sie verfügen nur über die Kernschritte und es fehlt der Prozess.

1. Melden Sie sich beim MySQL-Docker an

Wie aus der obigen Datei docker-compose.yml ersichtlich ist, ist das Kennwort des MySQL-Root-Benutzers nicht konfiguriert.
Im Abschnitt zur Volume-Zuordnung können Sie sehen, dass wir die Datei /etc/mysql/conf.d/docker.cnf im Container nach außen zugeordnet haben. Der Inhalt dieser Datei ist wie folgt:

[mysqld]
Host-Cache überspringen
Namensauflösung überspringen

Fügen Sie die folgende Zeile hinzu, sodass für die Anmeldung bei MySQL kein Kennwort erforderlich ist.

[mysqld]
Host-Cache überspringen
Namensauflösung überspringen
Skip-Grant-Tabellen

Starten Sie den Container nach dem Hinzufügen neu.

Docker-Compose nach unten
docker-compose up -d

2. Legen Sie das Root-Passwort fest

Betreten Sie den Container und melden Sie sich mit dem Root-Account beim MySQL-Server an.

docker exec -it mysql /bin/bash
mysql -uroot # Drücken Sie hier die Eingabetaste, um sich ohne Eingabe eines Kennworts beim Server anzumelden. mysql> flush privileges;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> ALTER USER 'root'@'localhost' IDENTIFIZIERT MIT mysql_native_password DURCH 'mysqlroot';
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

mysql> Berechtigungen leeren;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Beachten Sie, dass Sie zuerst die Berechtigungen löschen müssen. Andernfalls schlägt die Kennwortänderung fehl.​

Beenden Sie dann den Container und stellen Sie die zugeordnete Datei /etc/mysql/conf.d/docker.cnf wieder her.

[mysqld]
Host-Cache überspringen
Namensauflösung überspringen

Löschen Sie die neu hinzugefügte Zeile und starten Sie den Container neu.

Docker-Compose nach unten
docker-compose up -d

3. Richten Sie Root-Remotezugriffsberechtigungen ein

Nachdem Sie den Container neu gestartet haben, betreten Sie ihn erneut und legen Sie die Remote-Zugriffsberechtigungen für den Root-Benutzer fest.

docker exec -it mysql /bin/bash
mysql -uroot -p # Sie müssen das im vorherigen Schritt konfigurierte Passwort mysqlroot eingeben

mysql> ALTER USER 'root'@'%' IDENTIFIZIERT MIT mysql_native_password DURCH 'mysqlroot';
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> Berechtigungen leeren;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Konfigurieren Sie die Remote-Zugriffsberechtigungen mit „root“@„%“ anstelle von „root“@„localhost“ im vorherigen Schritt.

Nach der Einstellung können Sie mit Navicat eine Verbindung herstellen, ohne den MySQL-Docker-Container neu zu starten.

4. Richten Sie den Fernzugriff für den normalen Benutzer myuser ein

Befolgen Sie die obigen Schritte, um die Remote-Verbindung für den normalen Benutzer myuser zu konfigurieren.

mysql> ALTER USER 'myuser'@'%' IDENTIFIZIERT MIT mysql_native_password DURCH 'mypass';
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> Berechtigungen leeren;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> gewähre 'myuser'@'%' alle Privilegien für *.* mit der Grant-Option;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> Berechtigungen leeren;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

Wenn die Einstellung erfolgreich ist, kann das MyUser-Konto auch eine Remoteverbindung über Navicat herstellen.

Dies ist das Ende dieses Artikels über die detaillierte Konfiguration des mysql8.x-Docker-Fernzugriffs. Weitere relevante Inhalte zum mysql8.x-Docker-Fernzugriff 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:
  • Docker stellt eine MySQL-Remoteverbindung bereit, um 2003-Probleme zu lösen
  • Tutorial zur Installation von MySQL mit Docker und zur Implementierung einer Remote-Verbindung
  • Docker stellt MySQL bereit, um Beispielcode für eine Remoteverbindung zu erreichen

<<:  HTML + CSS + JS-Beispielcode zur Nachahmung des Helligkeitsanpassungseffekts von Win10

>>:  Wie wählt man das perfekte Aloe Vera Gel aus? Perfektes Aloe Vera Gel – So erkennen Sie Echtheit und Fälschung

Artikel empfehlen

Vue3 manuelle Kapselung Popup-Box-Komponente Nachrichtenmethode

In diesem Artikel wird der spezifische Code der m...

So laden Sie Projekte im Linux-System in die Code Cloud hoch

Erstellen Sie ein neues Projekt test1 auf Code Cl...

Upgrade von MySQL 5.1 auf 5.5.36 in CentOS

Dieser Artikel beschreibt den Upgrade-Prozess von...

Verstehen Sie das CSS3-Rasterlayout in 10 Minuten

Grundlegende Einführung Im vorherigen Artikel hab...

JS+Canvas zeichnet ein Glücksrad

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

So verwalten Sie zwischengespeicherte Seiten in Vue

Inhaltsverzeichnis Problem 1: Zerstörung 1. Wie m...

Mehr als 100 Zeilen Code zur Implementierung von React Drag Hooks

Vorwort Der Quellcode umfasst insgesamt nur mehr ...

Kommentare auf Webseiten verursachen Textüberlauf im Internet Explorer

Der experimentelle Code lautet wie folgt: </hea...

Detaillierte Erklärung, wann Javascript-Skripte ausgeführt werden

JavaScript-Skripte können überall in HTML eingebe...

Details zum Schreiben von React in einem Vue-Projekt

Wir können jsx/tsx-Dateien direkt erstellen Die P...

Beispiel für eine erzwungene Konvertierungsmethode für MySQL-Zeichenfolgen

Vorwort Da die Typen derselben Felder in den beid...

Tipps zur Optimierung von MySQL SQL-Anweisungen

Wenn wir mit einer SQL-Anweisung konfrontiert wer...

So verwenden Sie das Modul-FS-Dateisystem in Nodejs

Inhaltsverzeichnis Überblick Dateideskriptoren Sy...