Ich habe mySql bereits auf meinem PC installiert, sodass Port 3306 bereits belegt ist. Dies ist der Grund, warum ich einen anderen Port als 3306 verwenden muss. Ich möchte in der Lage sein, mit meinem Computer eine Verbindung zu meiner docekr-Instanz herzustellen, ohne Docker-Befehle zu verwenden, damit ich mit meiner Anwendung (Spring Web App) eine Verbindung zu dieser Instanz herstellen kann ).

Docker-Befehle, die ich verwendet habe:

docker run --name jt-mysql -e MYSQL_ROOT_PASSWORD=password -p 3307:3307 -d mysql

Dann habe ich versucht, eine Verbindung zu dieser Instanz herzustellen mit:

mysql --user=root -P 3307 -p

In diesem Fall erhalte ich folgenden Fehler:

FEHLER 1045 (28000): Zugriff für Benutzer 'root' @ 'localhost' verweigert (mit Passwort: YES)

Bitte beachten Sie, dass wenn ich versucht habe, die auf meinem PC installierte Instanz zu verwenden, dies funktioniert mit:

mysql --user=root -P 3306 -p

Weitere Informationen zu meiner Docker-Instanz mit:

docker ps

Ich bekomme:

f52a94aa63da mysql "docker-entrypoint.s…" vor 4 Minuten Bis 4 Minuten 3306 / tcp, 33060 / tcp, 0.0.0.0:3307->3307/tcp jt-mysql

Mit Status in meinem Docker-Image (Eingabe mit Docker-Befehlen) erhalte ich:

Connection id:      11
Current database:   
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     8.0.19 MySQL Community Server - GPL
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:        /var/run/mysqld/mysqld.sock
Binary data as:     Hexadecimal
Uptime:         16 min 50 sec

Mit dem Befehl env:

HOSTNAME=f52a94aa63da
MYSQL_ROOT_PASSWORD=password
PWD=/
HOME=/root
MYSQL_MAJOR=8.0
GOSU_VERSION=1.7
MYSQL_VERSION=8.0.19-1debian9
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env
1
AM13 23 Feb. 2020 im 13:10

3 Antworten

Beste Antwort

Befehl zum Starten des MySQL-Containers an Port 3306 und zum Offenlegen an Port 3307

docker container run -d --name=LocalMySQLDB -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password mysql

ODER

docker run -d --name=LocalMySQLDB -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password mysql

Der obige Befehl startet den MySQL-Datenbankserver im Container "LocalMySQLDB"

Verwenden Sie den folgenden Befehl, um eine Verbindung zur containerisierten MySQL-Instanz herzustellen

mysql -h 127.0.0.1 -uroot -P 3307 -ppassword

Ich habe dies viele Male auf meinem lokalen Computer zu Testzwecken versucht. Es wird definitiv auch für Sie funktionieren. Bitte kommentieren Sie, wenn es in Ihrem Fall nicht funktioniert.

2
cloudnativeview 23 Feb. 2020 im 11:49

Wenn Sie einen Docker-Container ausführen, versuchen Sie bitte, diesen Parameter am Ende hinzuzufügen.

docker run --name jt-mysql -e MYSQL_ROOT_PASSWORD=password -p 3307:3306 -d mysql --network host
0
Robert B. 23 Feb. 2020 im 10:55

Starten Sie den Docker-Container mit dem folgenden Befehl:

docker run -d -p 3307:3306 --name mysql_server -e MYSQL_ROOT_PASSWORD=123456 mysql

Stellen Sie mit dem folgenden Befehl eine Verbindung zum Container vom Host her her:

mysql -u root -P 3307 --protocol=tcp -p 
0
Marko Medojević 23 Feb. 2020 im 10:41