Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

MySQL com PHP (access denied)

Estou tentando subir um php-apache e fazer a conexão com o MySQL usando docker-compose:

Docker-compose.wml

version: "3.3"

services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root

  php:
    build: ./php
    volumes:
      - "./src/:/var/www/html/"
    ports:
      - 8082:80
    links:
      - db

index.php

<?php
$servername = "db";
$username = "root";
$password = "root";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

Mensagem de erro retornada ao acessar localhost:8082


Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'root'@'172.21.0.3' (using password: YES) in /var/www/html/index.php on line 14
Connection failed: Access denied for user 'root'@'172.21.0.3' (using password: YES)

Alguem sabe por que esta dando este problema, e o que fazer para corrigir?

1 resposta
solução!

Descobri o problema, caso alguem caia no mesmo:

eu tenho meu docker-compose.yml, e 2 .dockerfiles, 1 para o php e 1 para o mysql.

O problema era que eu não estava dando build no mysql, eu estava direto rodando

docker-compose up

Vou postar aqui meus códigos, para já caso alguem queira usar o php-apache com o mysql subindo um arquivo dump.sql no docker.

Minha arquitetura:

/Projeto
 |
 |-php
 |  |-Dockerfile
 |  |-php.ini
 |
 |-mysql
 |  |-Dockerfile
 |  |-db_dump
 |  |  |-db.sql
 |
 |-src
 |  |-{MEU PROJETO}
 |
 |-docker-compose.yml

docker-compose.yml:

version: "3.3"

services:
  db:
    build: ./mysql
    environment:
      MYSQL_ROOT_PASSWORD: root

  php:
    build: ./php
    volumes:
      - "./src/:/var/www/html/"
    ports:
      - 8082:80
    links:
      - db

php/Dockerfile:

FROM php:7.0-apache
COPY php.ini /usr/local/etc/php/
RUN apt-get update \
  && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev \
  && docker-php-ext-install pdo_mysql mysqli mbstring gd iconv mcrypt \
  && a2enmod rewrite

php/php.ini:

[Date]
date.timezone = "America/Sao_Paulo"

mysql/Dockerfile:

FROM mysql

ADD db_dump/db.sql /docker-entrypoint-initdb.d

para rodar tudo isso é necessário dar o build: docker-compose up --build -d

O projeto está demorando um pouco para subir da primeira vez por causa do mysql

Mas é isso ai, agora consigo conectar no banco de dados tranquilo, com o user root e senha root