Heim  >  Fragen und Antworten  >  Hauptteil

So stellen Sie eine Verbindung von Localhost zu einem Docker-Container her, der im Docker-Netzwerk ausgeführt wird

<p>Ich habe einen MySQL-Docker-Container, der mit Docker wie folgt geschrieben wurde:</p> <pre class="brush:php;toolbar:false;">version: "3.3" Dienstleistungen: Datenbankserver: Containername: Datenbank Bild: mysql:latest bauen: Dockerfile: ./Dockerfile Umfeld: MYSQL_ROOT_PASSWORD: rootTest MYSQL_USER: soumalya MYSQL_PASSWORD: userTest Häfen: - „3031:3306“ Netzwerke: - intern Bände: - mysql:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro Neustart: sofern nicht gestoppt Netzwerke: intern: Fahrer: Brücke Bände: mysql:</pre> <p>Ich verbinde mich mit dem richtigen Passwort mit localhost:3031, erhalte jedoch folgende Fehlermeldung: </p> <pre class="lang-bash Prettyprint-override"><code>Zugriff für Benutzer „root“@‘172.19.0.1‘ verweigert (mit Passwort: JA) </code></pre> <p>Wie behebe ich diesen Fehler? Auch andere Container im selben internen Netzwerk können keine Verbindung zur Datenbank herstellen. </p><p>Den Inhalt der Docker-Datei gebe ich hier an:</p><p><code></code></p> <pre class="brush:php;toolbar:false;">ADD init.sql init.sql</pre> <p>Ich habe den Inhalt von init angegeben. SQL hier:</p> <pre class="brush:php;toolbar:false;">Datenbank erstellen, falls keine Bewertungen vorhanden sind; Datenbank erstellen, falls keine Benutzer vorhanden sind; Datenbank erstellen, falls keine Anbieter vorhanden sind; GEWÄHREN ALLE PRIVILEGIEN für Bewertungen.* an 'soumalya'@'%'; GEWÄHREN ALLE PRIVILEGIEN für Benutzer.* an 'soumalya'@'%'; GEWÄHREN SIE ALLE PRIVILEGIEN für Anbieter.* an 'soumalya'@'%';</pre> <p>Aus den Containerprotokollen kann ich ersehen, dass die Datenbank startet und auf eingehende Verbindungen in Port 3306 wartet. </p>
P粉418854048P粉418854048452 Tage vor486

Antworte allen(1)Ich werde antworten

  • P粉803527801

    P粉8035278012023-07-26 10:43:28

    正如@HansKillan所说,当数据库已经存在时,我更改了密码,更改的密码被忽略了,它正在使用旧密码。我不得不手动修改我的用户的密码写sql命令使用docker exec <container_name>…使用SQL命令修改用户密码。然后一切都成功了。在您的情况下,如果您的数据库不包含太多数据,那么您可以直接删除卷并重新创建容器以缩短时间

    Antwort
    0
  • StornierenAntwort