gpt4 book ai didi

mysql - 在 docker 中连接到 mysql

转载 作者:行者123 更新时间:2023-11-30 22:20:02 25 4
gpt4 key购买 nike

我正在使用 official MySQL image来自 docker hub 并公开端口 3333:3306 以从外部连接。

我知道我必须将 /etc/mysql/my.cnf 中的绑定(bind) IP 更改为该容器的 IP 并为用户授予权限,例如:GRANT ALL PRIVILEGES ON * 。 * TO 'newuser'@'container_ip'; 这样我就可以通过以下方式连接到这个容器:

mysql -h container_ip -u root -p

但是我收到了这个错误

错误 2002 (HY000):无法通过套接字 '/var/run/mysqld/mysqld.sock' (2) 连接到本地 MySQL 服务器

顺便说一句,我也尝试从另一个容器中的 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. 每次docker-compose up 时容器的IP 可能会改变。我该如何配置它?

最佳答案

嗯,我有点困惑。从主机操作系统的角度来看,docker 容器绑定(bind)到一个或多个网络接口(interface)。在您的撰写文件中,您将端口 3333 公开给主机。这就是您必须连接到的内容。

此外,您需要使用 IP 地址,否则 mysql 客户端将尝试使用 unix 套接字进行连接。

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

如果您尝试从您的博客容器内部进行连接,那么您可以使用 mysqldb 作为具有 3306 端口的主机。

关于mysql - 在 docker 中连接到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36904324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com