Sto utilizzando il server mysql all'interno del contenitore docker e sono in grado di accedere all'interno della finestra mobile. Come creare una connessione in mysql workbench in esecuzione sul mio locale (macchina host).Come connettere mysql workbench ad eseguire mysql all'interno della finestra mobile?
risposta
2 condizioni docker correlati:
prima, la corsa finestra mobile deve mappare la porta mysql a una porta host:
docker run -p host:container
(per esempio: docker run -d -p 3306:3306 tutum/mysql
)
secondo, se sei usi ng finestra mobile in una VM (finestra mobile, con boot2docker), è necessario utilizzare l'IP di
docker-machine ip <VMname>
, con la porta mappata dell'host.http://$(docker-machine ip <VMname>):hostPort
Se avete bisogno di usare localhost
, si avrebbe bisogno di fare some port forwarding at the VirtualBox level:
VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port3306,tcp,,3306,,3306"
VBoxManage controlvm "boot2docker-vm" natpf1 "udp-port3306,udp,,3306,,$3306"
(controlvm
se la VM è in esecuzione, modifyvm
è la VM viene interrotta) (sostituire " boot2docker-vm
"con il nome del tuo VM: vedi docker-machine ls
)
.210
2 condizioni mysql-correlato:
Come illustrato in
nkratzke/EasyMySQL/Dockerfile
, è necessario abilitare l'accesso remoto:# Enable remote access (default is localhost only, we change this # otherwise our database would not be reachable from outside the container) RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
È necessario creare utenti quando startig il database la vostra immagine finestra mobile in.
Si veda ad esempionkratzke/EasyMySQL/start-database.sh
, che è chiamato dalDockerfile CMD
:/usr/sbin/mysqld & sleep 5 echo "Creating user" echo "CREATE USER '$user' IDENTIFIED BY '$password'" | mysql --default-character-set=utf8 echo "REVOKE ALL PRIVILEGES ON *.* FROM '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8 echo "GRANT SELECT ON *.* TO '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8 echo "finished"
ho avuto soluzione per questo impostando valore di campo in Nome host: 127.0.0.1 (localhost), la porta di default 3306 con i tuoi crediti.
A quale campo ti riferisci qui? – VonC
@VonC Qui mi riferisco ai campi del workbench come * hostname *, * port *, * username * e * password * richiesti per connettere mysql server. –
È necessario eseguire alcune configurazioni nel contenitore docker. Si prega di seguire i seguenti passi.
Specificare il blocco di configurazione mysql nel docker-compose.yml. Ho seguito il blocco mysql sotto servizi oggetto nel mio file docker-compose.yml.
services: db: image: mysql volumes: - "./.data/db:/var/lib/mysql" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: mydb MYSQL_USER: user MYSQL_PASSWORD: pass ports: 42333:3306
riavvio contenitore finestra mobile ed eseguire comandi seguenti per arrivare alla shell bash nel contenitore mysql
docker ps docker exec -it <mysql container name> /bin/bash
All'interno del contenitore, per la connessione a mysql riga comandi,
mysql -u root -p
Utilizzare MYSQL_ROOT_PASSWORD come specificato nel docker-compose.yml. Esegui i seguenti comandi per creare un nuovo utente.
create user 'user'@'%' identified by 'pass'; grant all privileges on *.* to 'user'@'%' with grant option; flush privileges;
Il segno di percentuale (%) indica tutti gli ip. Riavvia il contenitore finestra mobile.
Nel proprio MySQL Workbench fornire i dettagli della connessione. Utilizzare MYSQL_PASSWORD come specificato nel file docker-compose.yml.
Si dovrebbe ora essere in grado di connettersi al vostro contenitore mysql.
Docker è in esecuzione sul mio computer locale. e ha 172.17.42.1 indirizzo IP. Quando eseguo $ select user(); Dà + ---------------- + | utente() | + ---------------- + | root @ localhost | + ---------------- + 1 riga in set (0,00 secondi) e mostra la variabile dà porta | 3306 –
@PawanSharma sei su Linux? Se sì, quale era il comando esatto di 'docker run 'che usi per avviare mysql containerizzato? Quale versione della finestra mobile stai usando? – VonC
Sì, io sono su Ubuntu mchine nad versione docker è Docker versione 1.8.2, build 0a8c2e3. Sono in grado di accedere a mysql all'interno del contenitore docker. –