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

Zusammenfassung von 76 Erfahrungspunkten der User Experience

Klassifizierung der Website-Erfahrung 1. Sinneser...

Mysql aktualisiert die Datenbank dynamisch - Skriptbeispiel - Erklärung

Das spezifische upgrade -Skript lautet wie folgt:...

Beispielcode zur Implementierung des Aushöhlungseffekts mit CSS

Wirkungsprinzip Verwenden Sie hauptsächlich CSS-F...

Natives JS zur Implementierung einer Echtzeituhr

Teilen Sie einen Echtzeituhreffekt, der mit nativ...

So stellen Sie Daten mit Binlog in MySQL 5.7 wieder her

Schritt 1: Stellen Sie sicher, dass MySQL Binlog ...

Der gesamte Prozess der Installation von mysql5.7.22 unter der ARM64-Architektur

MySQL-Download-Adresse: https://obs.cn-north-4.my...

Methode und Einführung der Tabellenindexdefinition in MySQL

Überblick Ein Index ist eine vom DBMS basierend a...

MySQL GROUP_CONCAT-Einschränkungslösung

Wirkung: Die Funktion GROUP_CONCAT kann einen Fel...

Beispielcode zur Implementierung eines 3D-Rotationseffekts mit reinem CSS

Verwenden Sie hauptsächlich die Eigenschaften „pr...