2016-04-28 172 views
1

我使用docker集線器中的official MySQL image,並從外部連接端口3333:3306。連接到docker中的mysql

我知道,我必須要改變綁定IP內/etc/mysql/my.cnf這個容器的IP和授予權限的用戶,如:GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'container_ip';這樣我就可以通過連接到這個容器:

mysql -h container_ip -u root -p

但我收到此錯誤

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

順便說一句,我也嘗試從WordPress的另一容器連接,但無法建立連接。這裏是docker-compose.yml

version: '2' 
services: 
    mysqldb: 
    image: mysql:5.6 
    environment: 
     MYSQL_ROOT_PASSWORD: password 
    volumes: 
     - ./mysql-data:/var/lib/mysql 
     - ./mysql-import-data:/import-data 
    ports: 
     - "3333:3306" 
    blog: 
    image: webdevops/php-nginx:ubuntu-14.04 
    environment: 
     WEB_DOCUMENT_ROOT: /usr/share/nginx/html 
    volumes: 
     - ./blog:/usr/share/nginx/html 
    ports: 
     - "8080:80" 
    depends_on: 
     - mysqldb 
  1. 什麼是我這個MySQL容器所犯的錯誤?我無法連接到它。
  2. 容器的IP每次可能更改docker-compose up。我如何配置它?
+0

可能重複[Warning:mysql \ _connect():無法連接到本地MySQL服務器](http://stackoverflow.com/questions/1005485/warning-mysql-connect-cant-connect-to-local -mysql服務器) –

回答

0

嗯我有點困惑。從主機操作系統的角度來看,Docker容器綁定到一個或多個網絡接口。在您的撰寫文件中,您將端口3333展示給主機。這就是你必須連接到的。

另外你需要使用一個IP地址,否則mysql客戶端會嘗試連接一個unix套接字。

mysql -h 127.0.0.1 --port 3333 -u root -p 

如果你想從您的博客容器內的連接,那麼你可以使用MySQLdb的爲您的主機與3306端口。

相關問題