1

我正在使用来自 docker hub 的官方 MySQL 映像并公开端口 3333:3306 以从外部连接。

我知道我必须将内部的绑定 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。我该如何配置它?
4

1 回答 1

0

嗯,我有点困惑。从主机操作系统的角度来看,docker 容器绑定了一个或多个网络接口。在您的撰写文件中,您将端口 3333 暴露给主机。这就是你必须连接的东西。

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

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

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

于 2016-04-28T02:57:32.563 回答