连接到docker中的mysql
问题描述:
我使用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
- 什么是我这个MySQL容器所犯的错误?我无法连接到它。
- 容器的IP每次可能更改
docker-compose up
。我如何配置它?
答
嗯我有点困惑。从主机操作系统的角度来看,Docker容器绑定到一个或多个网络接口。在您的撰写文件中,您将端口3333展示给主机。这就是你必须连接到的。
另外你需要使用一个IP地址,否则mysql客户端会尝试连接一个unix套接字。
mysql -h 127.0.0.1 --port 3333 -u root -p
如果你想从您的博客容器内的连接,那么你可以使用MySQLdb的为您的主机与3306端口。
可能重复[Warning:mysql \ _connect():无法连接到本地MySQL服务器](http://*.com/questions/1005485/warning-mysql-connect-cant-connect-to-local -mysql服务器) –