Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
23
respostas

Dúvidas sobre conexão com mysql

Estou com dúvidas sobre a conexão com o banco de dados, estou tentando com mysql mas está dando problema:

Dentro do arquivo .env:

DB_CONNECTION=mysql
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=produtos_estoque
#DB_USERNAME=root
#DB_PASSWORD=

Depois de rodar php artisan migrate deu isso:

   Illuminate\Database\QueryException  : SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO) (SQL: select * from information_schema.tables where table_schema = forge and table_name = migrations and table_type = 'BASE TABLE')

  at /home/grasiela/projetos/produtos-estoque/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668| 

  Exception trace:

  1   PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)")
      /home/grasiela/projetos/produtos-estoque/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=forge", "forge", "", [])
      /home/grasiela/projetos/produtos-estoque/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  Please use the argument -v to see more details.

   Whoops\Exception\ErrorException  : Module 'mbstring' already loaded

  at Unknown:0
    1| 

  Exception trace:

  1   Whoops\Run::handleError("Module 'mbstring' already loaded", "Unknown")
      /home/grasiela/projetos/produtos-estoque/vendor/filp/whoops/src/Whoops/Run.php:408

  2   Whoops\Run::handleShutdown()
      [internal]:0
23 respostas

Olá Grasiela,

Para conectar com o mysql você precisa de todas essas informações que estão comentadas, testa novamente por favor descomentando essa parte do .env que você mandou, deve ficar assim:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=produtos_estoque
DB_USERNAME=root
DB_PASSWORD=

Além disso confere também se essas informações de DB_DATABASE, DB_USERNAME, etc.. estejam corretas.

Espero ter ajudado, qualquer dúvida é só falar!

Obrigado por lembrar de descomentar, mas ainda continua o problema:

Illuminate\Database\QueryException  : SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) (SQL: select * from information_schema.tables where table_schema = produtos_estoque and table_name = migrations and table_type = 'BASE TABLE')

  /home/grasiela/projetos/produtos-estoque/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=localhost;port=3306;dbname=produtos_estoque", "root", "", [])
      /home/grasiela/projetos/produtos-estoque/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  Please use the argument -v to see more details.

   Whoops\Exception\ErrorException  : PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20170718/pdo_sqlite (/usr/lib/php/20170718/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_sqlite.so (/usr/lib/php/20170718/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver))

Estou há um tempo tentando resolver esse problema e nada.

A mensagem de erro está indicando que o acesso foi negado para o usuário root ao tentar fazer login sem utilizar senha no mysql.

O acesso do mysql está correto? usuário root sem senha?

Outra dúvida, como foi instalado o mysql e qual é a versão?

Sim, o acesso é esse mesmo, o usuário é o root e não tem senha, a versão do mysql na minha máquina é essa:

mysql Ver 14.14 Distrib 5.7.30

O acesso estando correto o problema então pode ser algo relacionado ao mysql, já que pela mensagem de erro do laravel dá para ver que foi tentado o acesso utilizando o usuário e senha corretos (root sem senha).

Então temos que fazer alguns testes para tentar descobrir o que está acontecendo. Pelo que vejo você está utilizando linux correto?

Entra por favor no terminal do mysql executando o comando abaixo:

mysql -u root

Após entrar executa esse próximo select para listar os usuários, suspeito que o problema possa estar relacionado ao host do usuário:

select user, host from mysql.user;

Manda aqui o retorno desse select.

Exatamente, uso Ubuntu 18.04, tentei rodar com mysql -u root e deu esse erro:

Access denied for user 'root'@'localhost' (using password: NO)

Uso phpMyAdmin e não uso senha.

Certo, eu instalei o phpMyAdmin aqui para fazer alguns testes.

Vai então na opção User accounts ou Contas de usuário no phpMyAdmin, manda aqui a tabela completa que aparece, pode colocar o print no imgur ou outro site que você conheça e mandar o link aqui.

Só pra ir adiantando também, a partir da tela mostrada acima, vai em Edit privileges do usuário root e compartilha o que aparece na aba de Login Information aqui também:

Já entendi melhor, pode ser que a primeira conta que aparece na sua lista esteja interceptando o acesso.

Tenta por favor cadastrar um novo usuário, algo com o nome laravel e com alguma senha simples, tem a opção Adicionar conta de usuário um pouco mais embaixo na página. Nesse novo usuário lembra de colocar o host como local e o valor localhost e marcar todos os privilégios, no plugin de autenticação deixa a nativa.

Após isso atualiza o .env com esse novo usuário e a senha que você criou e tenta novamente executar as migrações. Diz aqui qual é o resultado.

Por curiosidade tenta também o acesso pelo terminal com o comando abaixo:

mysql -u laravel -p

Após executar vai ser pedido a senha.

Fiz todos os procedimentos, rodei o migration no terminal e saiu essa informação:

 PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)")
      /home/grasiela/projetos/produtos-estoque/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=forge", "forge", "", [])
      /home/grasiela/projetos/produtos-estoque/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

Executei mysql -u laravel -p e recebi essa mensagem:

ERROR 1045 (28000): Access denied for user 'laravel'@'localhost' (using password: YES)

Pelo erro que deu no laravel parece que ele não utilizou o novo usuário, e sim o usuário padrão que é o forge, confere se está tudo certo no arquivo .env

Access denied for user 'forge'@'localhost'

Confere isso antes de continuar, o erro deveria pelo menos mencionar o novo usuário e não forge


O erro continuando acho que o próximo passo é mexer nesses dois primeiros usuários que aparecem. Edita os dois que estão com o nome Qualquer em vermelho e coloca algum nome de usuário temporário. Depois disso compartilha aqui como ficou a tabela de usuários e testa novamente.

Não entendi, como assim usuário temporário? Estou tentando fazer as alterações em Qualquer usuario e mostra esse erro:

GRANT USAGE ON  *.* TO ''@'%' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Mensagem do MySQL: Documentação

#1133 - Não pode encontrar nenhuma linha que combine na tabela usuário (user table)

e também não consegui alterar, segue o print abaixo.

https://imgur.com/csVKAIK

Opa, acho que expliquei mal, é para editar os dois usuários mencionados e colocar algum nome temporário para eles (nome aaa por exemplo), atualmente eles não tem um nome e por isso aparece o Qualquer. Eu testaria excluir esses usuários, mas sem conhecer o que você tem instalado e o que usa o mysql isso é perigoso.

Para facilitar vamos então tentar mudar o nome desses usuários diretamente com sql. Vai na aba SQL que fica próximo a aba de Contas de usuário, e lá executa os comandos abaixo:

  • Renomeando o primeiro usuário Qualquer

    RENAME USER ''@'%' TO 'aaa'@'%';
  • Renomeando o segundo usuário Qualquer

    RENAME USER ''@'localhost' TO 'bbb'@'localhost';

Após isso compartilha novamente como ficou a tabela dos usuários e faz o teste mais uma vez.

A tabela ficou assim https://imgur.com/ETKQyr0

Modifiquei os dados em .env e continua o mesmo problema

Exception trace:

  1   PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'laravel'@'localhost' (using password: YES)")
      /home/grasiela/projetos/produtos-estoque/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

Certo, me diz por favor como foi feita a instalação do mysql e se durante ou após a instalação foi executado o comando abaixo:

sudo mysql_secure_installation

Eu instalei O Xampp pelo terminal, esse comando não rodei não.

solução!

Ah, em próximas instalações eu recomendo dar preferência à instalação direta do MySQL e do PHP, é mais fácil de encontrar suporte e você tem mais controle sobre as instalações e configurações.

Peço desculpas pela demora mas estou fazendo a instalação do Xampp para tentar simular o erro e fazer alguns testes de possíveis soluções, realmente pelo fórum leva muito tempo para ir testando, assim caso eu não encontre uma solução logo a gente pode fazer uma chamada pelo Google Meet para não perder mais tempo.

Qual o seu email para poder te chamar no googleMeet? Por favor.

Me manda um email pra gente combinar um horário:

lucas.peixoto@caelum.com.br

Blz Lucas, quero também adiantar aqui que consegui migrar as tabelas para o mysql, muito obrigada pela ajuda, suas instruções foram essenciais para entender o que estava acontecendo, tive que desinstalar o Xampp e reinstalar novamente, funcionou dessa vez.

Opa Grasiela, muito bom saber que deu certo!

Como uma reinstalação resolveu o problema, a causa parece ter sido algo relacionado à uma configuração (ou falta de configuração) do xampp.

Infelizmente o problema voltou com o acesso, mandei um email para você.