Solucionado (ver solução)
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ê.