首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法连接到坞-组合中的数据库

问无法连接到坞-组合中的数据库
EN

Stack Overflow用户
提问于 2019-06-24 10:37:30
回答 4查看 3.6K关注 0票数 1

这是我的船坞-合成人。

代码语言:javascript
复制
version: "3.1"
services:
  mysql:
    image: mysql:8.0.13
    container_name: project-mysql
    volumes:
      - ./docker/data/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: db
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: secret
    ports:
      - "3306:3306"

  webserver:
    image: nginx:alpine
    container_name: project-webserver
    working_dir: /var/www
    volumes:
      - .:/var/www
      - ./docker/config/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
    ports:
      - "8080:80"

  php-fpm:
    build: ./docker/config/php
    container_name: project-php-fpm
    working_dir: /var/www
    volumes:
      - .:/var/www
    environment:
      XDEBUG_CONFIG: remote_host=172.17.0.1
      PHP_IDE_CONFIG: serverName=docker

问题是php容器无法连接到mysql。虽然我可以从主机连接到mycli -h 127.0.0.1 -P 3306 -u root。但是当我在php容器中执行并尝试它时,就会得到“拒绝连接”。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-06-24 11:18:01

mysql服务将mysql服务器的主机端口3306绑定到3306。因此,您可以从主机连接是正常的。

从php容器内部来看,localhost指的是@David在评论中提到的特定容器。

由于您使用的是docker-compose容器,所以您应该使用服务名称来连接到mysql服务器。

从php容器中尝试如下:

mycli -h mysql -P 3306 -u root

票数 2
EN

Stack Overflow用户

发布于 2019-06-24 10:48:18

您可以与用户root连接。但是在您的停靠-撰写文件中,您正在通过用户dbuser进行连接。如果这不是问题,请告诉我。

票数 1
EN

Stack Overflow用户

发布于 2019-06-24 11:42:41

通常情况下,当请求来自与绑定地址不同的ip时,conenction会拒绝您的请求。下面的尝试应该是有效的。

  • 确保mysql配置my.cnf或其他默认配置不会阻止从外部连接(如果在mysql配置中选中bind-address (如果它只允许本地连接表单),我现在会将其设置为0.0.0.0或注释该行(如果存在)
    • mysqld --verbose --help =>您将看到所有选项
    • mysqld --verbose --help | grep bind-address =>检查绑定地址

​

  • 确保我尝试登录的用户有足够的权限连接(SELECT user,host FROM mysql.user;),检查您的用户是否可以从停靠网络=> 172.*或anywhere=> %连接。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56734801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档