Отказано в доступе к базе данных MySQL в Docker - PullRequest
0 голосов
/ 04 мая 2018

Файл My 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) я могу просматривать веб-сайт, но он запрещает доступ пользователю:

Доступ пользователю dev для @ '%' к базе данных запрещен, база данных dev_test

Моя конфигурация для второго сайта настроена для доступа ко второму порту / пользователю MySQL:

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

Я попытался ответить на этот вопрос , но безуспешно. Если я docker exec bash в образ тестовой базы данных и запускаю SHOW GRANTS FOR dev, он говорит:

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

1 Ответ

0 голосов
/ 04 мая 2018

Возможно, вы забыли использовать правильный хост MySQL на вашем втором сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...