2015-11-20 7 views

risposta

9

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 esempio nkratzke/EasyMySQL/start-database.sh, che è chiamato dal Dockerfile 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" 
    
+0

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 –

+0

@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

+0

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. –

0

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.

+1

A quale campo ti riferisci qui? – VonC

+0

@VonC Qui mi riferisco ai campi del workbench come * hostname *, * port *, * username * e * password * richiesti per connettere mysql server. –

2

È necessario eseguire alcune configurazioni nel contenitore docker. Si prega di seguire i seguenti passi.

  1. 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 
    
  2. 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.

  3. Nel proprio MySQL Workbench fornire i dettagli della connessione. Utilizzare MYSQL_PASSWORD come specificato nel file docker-compose.yml.

    enter image description here

Si dovrebbe ora essere in grado di connettersi al vostro contenitore mysql.

Problemi correlati