[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Flávio Araújo Silva
Criador Flávio Araújo Silva 15/11/2018
<?php
 
$dsn = 'mysql';
$host = 'mysql';
$database = 'curso_php_pdo';
$user = 'root';
$password = 'root';
$port = 3306;
 
 
$pdo = new PDO ("{$dsn}:host={$host};port={$port};dbname={$database}", $user, $password);
 

var_dump($pdo); 
Manager Carlos Ferreira 15/11/2018

Olá Flávio!
Tudo bem?

Para identificar o erro precisa alterar as configurações do ambiente para ter ideia do erro gerado.

Adicione no inicio desse arquivo PHP:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Após analisar o erro, caso não consiga identificar o problema, me retorna com um print que te ajudo a resolver (usa essa ferramenta: https://uploaddeimagens.com.br/).

Carlos Ferreira
Criador Flávio Araújo Silva 15/11/2018

Olá deu erro https://uploaddeimagens.com.br/imagens/captura_de_tela_2018-11-23_as_19-39-07-png

 

 


Fatal error: Uncaught PDOException: PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in /var/www/cursos/PDO/public/index.php:14 Stack trace: #0 /var/www/cursos/PDO/public/index.php(14): PDO->__construct('mysql:host=mysq...', 'root', 'root') #1 {main} Next PDOException: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client in /var/www/cursos/PDO/public/index.php:14 Stack trace: #0 /var/www/cursos/PDO/public/index.php(14): PDO->__construct('mysql:host=mysq...', 'root', 'root') #1 {main} thrown in /var/www/cursos/PDO/public/index.php on line 14

Flávio Araújo Silva
Manager Carlos Ferreira 15/11/2018

Olá, Flávio!

Obrigado por retornar.

O seu ambiente que está problemas, e não o código.

Você está usando o Docker, certo?

Quando rodou para subir os containers usando o laradock você subiu todos esses containers, certo?
docker-compose up -d nginx mysql phpmyadmin

Tenta acessar o PhpMyAdmin e acessar:
URL: http://localhost:8080
Host: mysql
User: root
Senha: root

Você está trabalhando com o Windows, certo?
O meu também deu o mesmo problema (muito comum o Docker dá problemas no Windows) para resolver eu precisei abrir o arquivo docker-compose.yml e comentar essa linha:
// Antes:
${DATA_PATH_HOST}/mysql:/var/lib/mysql

// Depois:
#${DATA_PATH_HOST}/mysql:/var/lib/mysql

Depois de fazer isso refiz a imagem do container:
docker-compose build mysql

E subi novamente os containers:
docker-compose up -d nginx mysql phpmyadmin

Carlos Ferreira
Criador Flávio Araújo Silva 15/11/2018

Olá Carlos, eu uso o mac ... fiz todo esse procedimento mas ainda continua o mesmo erro :( 

Flávio Araújo Silva
Criador Flávio Araújo Silva 15/11/2018

Antes de instalar o docker eu usava o xaamp será que tem algum tipo de conflito ?

Flávio Araújo Silva
Manager Carlos Ferreira 15/11/2018

Olá, Flávio!

Sim, pode ter algum conflito.

Se conferir no arquivo .env dentro da pasta do laradock/ vai observar que algumas portas são usadas por default, como a porta 80 para rodar o nginx, a porta 8080 para rodar PhpMyAdmin, a porta 3306 para rodar o mysql e etc. Se essas portas estiverem sendo ocupadas por algum outro processo, vai dá conflitos.

O Docker é uma ferramenta muito prática, mas as vezes costuma dá um bom trabalho para funcionar.

Outro ponto que pode ocasionar esse problema é o fato de usar MySQL na versão 8, que não trabalha muito bem com o PHP.

No arquivo .env na pasta do laradock/ altere a versão banco de dados MySQL, de:
MYSQL_VERSION=latest

Para:
MYSQL_VERSION=5.7

Após remova todos os containers:
docker-compose down

Reconstrua o container do MySQL:
docker-compose build mysql

E suba novamente:
docker-compose up -d nginx mysql phpmyadmin


PS. Usar o Docker com o utilitário laradock é opicional, caso você já tenha um ambiente pronto, usando alguma outra ferramenta, pode trabalhar em cima do que já tem.

Carlos Ferreira
Criador Flávio Araújo Silva 15/11/2018

Olá Carlos, para resolver o problema fiz o seguinte procedimento e deu certo , muito obrigado pela ajuda 

 

Terminal 

$ docker-compose exec mysql bash
$ mysql -u root -p 

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
Flávio Araújo Silva
Manager Carlos Ferreira 15/11/2018

Show amigo, muito obrigado por compartilhar a sua solução! =D

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!