Ich habe bereits zu diesem Thema gegoogelt und nur wenige Threads gefunden. Basierend auf diesen Threads habe ich die folgenden Schritte ausgeführt. Aber ich stehe vor einem Problem.So stellen Sie eine Verbindung zu MySQL her, die auf dem Docker vom Host-Rechner läuft
Grundsätzlich möchte ich ein Docker-Image für mysql erstellen und dann von meinem Host-Computer (Mac OS X) verbinden.
Basierend auf this Post, muss ich den mysql Unix-Socket mit dem Host teilen. in diese Richtung habe ich die folgenden Schritte
getan1. Start docker quick terminal
2. docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest
3. docker exec -it mysql bash
4. mysql -uroot -p
5. create database MyDB;
6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
7. exit;
8. mkdir /Users/abhi/host
9. docker run -it -v /host:/shared mysql/mysql-server:latest
Jetzt erhalte ich die Fehler
MacBook-Pro:~$ docker run -it -v /Users/abhi/host:/shared mysql/mysql-server
error: database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
Aber Sie sehen, dass ich das Passwort zur Verfügung gestellt haben und meine Datenbank initialisiert.
Alles, was ich will ist, dass von meinem Host-Rechner, ich kann eine Verbindung zu der MySQL-Datenbank innerhalb von Docker laufen.
EDIT :: ----- Lösung, die ------
Dank RICO gearbeitet. Schließlich werden die Schritte, die für mich gearbeitet sind
1. Start docker quick terminal
2. docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest
3. docker exec -it mysql bash
4. mysql -uroot -p
5. create database MyDB;
6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
7. exit;
8. docker-machine env default
die Adresse in Schritt IP verwenden 8. Port 3306 ist, Benutzer root ist, das Passwort ist durch ein Passwort, Datenbank MyDB.
Verbindung ist erfolgreich!
Das ist nicht für mich arbeiten. Ich habe den ersten Befehl ausgeführt, der das Image und den Container erstellt hat. aber wenn ich versuche, eine Verbindung zu mysql von meinem Host mit dbvisualizer. es heißt "Kommunikationsfehler". Mein Host ist eine Mac-Maschine und mysql läuft nicht. Daher muss ich den dbvisualizer verwenden, um eine Verbindung zu mysql herzustellen, die in meinem Docker-Container ausgeführt wird. –
@KnowsNotMuch das ist, weil Sie MacOS mit Docker-Maschine verwenden. Docker läuft nicht nativ auf MacOS, überprüfe meine Bearbeitung für die Frage. – Rico