mysql - 本地运行的Docker容器无法建立与远程MySQL数据库的连接

标签 mysql docker

我正在尝试开发一种从远程数据库获取信息的微服务,但是当我运行容器时,它无法建立与该数据库的连接。

容器在本地运行(我仍在开发中),数据库托管在AWS RDS Aurora MySQL中。

数据库正在多个生产网站上使用,而我正尝试在容器中使用同一用户。该用户拥有对该数据库的完全许可权,而我的本地PHPMyAdmin使用该同一用户连接到该数据库,而我使用该数据库管理数据库没有任何麻烦。

问题是容器中的数据库连接失败,并显示“拒绝访问”错误。

数据库用户设置为dbuser@%,但错误显示:

Access denied for user 'dbuser'@'[my public ip]' (using password: YES).



我试图为dbuser@[my public ip]添加另一个帐户,并赋予它与通配符主机帐户相同的权限,但这没有什么区别。

在另一个测试中,我在容器内添加了curl调用以加载外部页面,以确保它可以进行外部连接并成功。只是数据库连接失败没有任何意义。

我的dockerfile看起来像这样:
FROM php:7.2-apache

RUN apt-get update
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN a2enmod rewrite

我希望有人遇到过这个问题,并且/或者知道我在这里想念的是什么。

提前致谢!

更多信息:

我正在使用适用于Windows的Docker和docker-compose来运行我的容器。我的docker-compose.yml文件如下所示:
version: "3"
services:
  web:
    image: repository/container:latest
    volumes:
     - ./src:/var/www/html
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - inv
networks:
  inv:

最佳答案

使用docker run --network host ...启动容器将使容器共享主机的网络堆栈。那应该解决问题。

关于mysql - 本地运行的Docker容器无法建立与远程MySQL数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48188153/

相关文章:

memory - Redis内存使用、ZSET和docker

docker - 找不到Traefik和Nginx 404页面

docker - 命令 '/bin/sh -c 返回一个非零代码 : 127

mysql - 仅在记录不存在时插入记录

docker - Docker容器更改默认DNS服务器

php - 根据表中分配的日期范围按日期过滤记录

php - 如何使用 2 个或更多关键字搜索多个列

docker - Kubernetes Pods 与内部/外部 IP 地址互通

php - 字符在 UTF-8 网站上显示不正确

mysql - 登录后如何显示每个用户的总数 - 数据库有 25,000 个用户 - 数百万行?