连接到 docker 内的 mysql
Connect to mysql inside docker
我正在使用来自 docker 集线器的 official MySQL image 并公开端口 3333:3306 以从外部连接。
我知道我必须将 /etc/mysql/my.cnf
中的绑定 IP 更改为该容器的 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 容器犯了什么错误?我无法连接到它。
- 每次
docker-compose up
容器的IP可能会改变。我该如何配置它?
嗯,我有点困惑。从 host os 的角度来看,docker 容器绑定到一个或多个网络接口。在您的 compose 文件中,您将 expos 端口 3333 连接到 host。这就是您必须连接到的内容。
此外,您需要使用 IP 地址,否则 mysql 客户端将尝试使用 unix 套接字进行连接。
mysql -h 127.0.0.1 --port 3333 -u root -p
如果您尝试从您的博客容器内部进行连接,那么您可以使用 mysqldb 作为您的 host 和 3306 端口。
我正在使用来自 docker 集线器的 official MySQL image 并公开端口 3333:3306 以从外部连接。
我知道我必须将 /etc/mysql/my.cnf
中的绑定 IP 更改为该容器的 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 容器犯了什么错误?我无法连接到它。
- 每次
docker-compose up
容器的IP可能会改变。我该如何配置它?
嗯,我有点困惑。从 host os 的角度来看,docker 容器绑定到一个或多个网络接口。在您的 compose 文件中,您将 expos 端口 3333 连接到 host。这就是您必须连接到的内容。
此外,您需要使用 IP 地址,否则 mysql 客户端将尝试使用 unix 套接字进行连接。
mysql -h 127.0.0.1 --port 3333 -u root -p
如果您尝试从您的博客容器内部进行连接,那么您可以使用 mysqldb 作为您的 host 和 3306 端口。