php - Docker 中的 MySQL 数据库访问被拒绝

标签 php mysql docker docker-compose

我的 Docker (v.2) docker-compose.yml 文件有 2 个 Ubuntu 镜像和 2 个 MariaDB 镜像:

app:
    container_name: app
    image:php-apache-dev:ubuntu-16.04
    links:
      - mysql
    depends_on:
      - mysql
    ports:
      - '8443:443'
    volumes:
      - .:/app
    environment:
      docker: 'true'
      PHP_DEBUGGER: 'xdebug'
      WEB_DOCUMENT_ROOT: '/app/public'
      WEB_NO_CACHE_PATTERN: '\.(.*)$$'
      working_dir: '/app'
      CONF_FILE: 'conf/local/develop.php'
  test:
      container_name: test
      image:php-apache-dev:ubuntu-16.04
      links:
        - mysql_test
      depends_on:
        - mysql_test
      ports:
        - '8444:443'
      volumes:
        - .:/app
      environment:
        docker: 'true'
        WEB_DOCUMENT_ROOT: '/app/public'
        WEB_NO_CACHE_PATTERN: '\.(.*)$$'
        working_dir: '/app'
        CONF_FILE: 'conf/local/test.php'
  mysql:
    image: mariadb:latest
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: 'dev'
      MYSQL_DATABASE: 'dev'
      MYSQL_USER: 'dev'
      MYSQL_PASSWORD: 'dev'
  mysql_test:
    image: mariadb:latest
    ports:
      - '3307:3306'
    environment:
      MYSQL_ROOT_PASSWORD: 'dev'
      MYSQL_DATABASE: 'dev_test'
      MYSQL_USER: 'dev'
      MYSQL_PASSWORD: 'dev'

一种用于开发,一种用于测试。当我访问第一个(在 localhost:4443 上)时,它可以工作。当我访问第二个网站(在 localhost:4444 上)时,我可以查看该网站,但它拒绝用户访问:

Access denied for user 'dev'@'%' to database 'dev_test'

我对第二个站点的配置设置为访问第二个 MySQL 端口/用户:

'db_port'             => env('DB_PORT', '3307'),
'db_name'             => env('DB_NAME', 'dev_test'),

我尝试了 this question 的答案但没有成功。如果我docker exec bash进入测试数据库镜像,并运行SHOW GRANTS FOR dev,它会说:

GRANT ALL PRIVILEGES ON `dev_test`.* TO 'dev'@'%'

最佳答案

您可能忘记在第二个站点中使用正确的 MySQL 主机。

关于php - Docker 中的 MySQL 数据库访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50177757/

相关文章:

php - 使用免费 IP 地理定位网络服务从 IP 地址获取国家/地区名称

php - 使用 PHP ("a-z"、 "0-9"和 "-"验证文件名)

C#:Select 语句未出现正确的结果

bash - 从Dockerfile和脚本调用时ROS命令不起作用

docker - 网络插件尚未准备就绪:cni config未初始化

php - 从数据库生成 CSS 类?

PHP 5.6 警告 : is_dir(): open_basedir restriction in effect

php - Codeigniter 事件记录类 - 从数据库获取除一个字段之外的所有字段

java - 内存中的陈旧对象(mysql、spring 3、hibernate)

ubuntu - apt-get update' 返回一个非零代码 : 100