Acesso negado para o usuário ‘root’ @ ‘localhost’ (usando a senha: YES) (Mysql :: Error)

Eu tentei implantar o aplicativo da web no meu servidor e estou recebendo essa exceção de database mysql “Acesso negado para o usuário ‘root’ @ ‘localhost’ (usando a senha: YES) (Mysql :: Error)”

Eu tentei acessar o database a partir do prompt de comando usando mysql -u root -p Eu sou capaz de fazer todas as operações do database.

qual é o erro

 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3649) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1176) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2558) at com.mysql.jdbc.Connection.(Connection.java:1485) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(DriverManager.java:620) at java.sql.DriverManager.getConnection(DriverManager.java:200) at com.mpigeon.DbConnection.DbConn(DbConnection.java:26) at com.mpigeon.CheckLoginHome.doGet(CheckLoginHome.java:39) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

Você precisa conceder access ao root do host local. Verifique esta ajuda do Ubuntu

tente usar a root como ..

 mysql -uroot 

então você pode verificar usuário e host diferente depois de ter feito o login usando

 select user,host,password from mysql.user; 

verifique se você está colocando espaço em branco na senha.

Eu enfrentei o mesmo erro após atualizar o servidor MySQL de 5.1.73 para 5.5.45 Existe outra maneira de corrigir esse erro.

No meu caso, eu era capaz de se conectar ao MySQL usando a senha de root, mas o MySQL ativamente se recusou a conceder privilégios para qualquer usuário;

  1. Conecte-se ao MySQL como root

     mysql -u root -p 

    em seguida, digite sua senha de root do MySQL;

  2. Selecione database;

     use mysql; 
  3. Muito provavelmente existe apenas um registro para o root na tabela mysql.user permitindo conectar apenas a partir do localhost (que estava no meu caso), mas pelo padrão, deve haver dois registros para root, um para localhost e outro para 127.0.0.1 ;

  4. Crie um registro adicional para o usuário root com Host='127.0.0.1' se não estiver lá;

      SET @s = CONCAT('INSERT INTO mysql.user SELECT ', REPLACE((SELECT GROUP_CONCAT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'user' AND TABLE_SCHEMA = 'mysql') ,"Host","'127.0.0.1'"), ' FROM mysql.user WHERE User="root"'); PREPARE stmt FROM @s; EXECUTE stmt; 
  5. Além disso, você pode executar mysql_upgrade -u -p para ver se está tudo ok.

Meu aplicativo está usando o Mura CMS e eu enfrentei esse problema. No entanto, a solução foi a incompatibilidade de senha entre o meu servidor local mysql e a senha nos arquivos de configuração. Assim que eu os sincronizei, funcionou.

Eu resolvi esse problema excluindo os usuários vazios que criavam pelo MySQL. Eu só tenho usuário root e meu próprio usuário. Eu apaguei o resto.

Atualize a tabela do usuário no database do mysql . E definir uma senha onde está em branco, eu estava usando o usuário root, então eu definir senha para o usuário root.

 update mysql.user set password = PASSWORD('123456') where password = ''; flush privileges; 

E novamente tentou do ATG CIM, fornecendo senha e funcionou bem.

Depois da atualização

http://i.stack.imgur.com/3Lchp.png

Eu tenho esse problema hoje ao instalar o SugarCRM (um CRM gratuito).

O sistema não conseguiu se conectar ao database usando o usuário root. Eu poderia logar definitivamente como root no console … então, qual foi o problema?

Descobri que na minha situação, eu estava recebendo exatamente o mesmo erro, mas isso foi porque a senha foi enviada para o mysql diretamente dos dados $_POST , em outras palavras, o caractere < da minha senha foi enviado para o mysql como < o que significa que a senha estava errada.

Tudo o resto não ajudou um pouco. A lista de usuários no mysql estava correta, incluindo o usuário anônimo (que aparece após as inputs raiz).

Eu pesquisei muito, mas não encontrei uma resposta definitiva para o meu problema. Eu usei KeyPass para gerar uma senha forte e poderia usá-lo com sucesso no mysql workbench para conectar, mas não a partir da linha de comando. Então eu mudei o psw para um fácil e funcionou na linha de comando. Eu consegui criar uma senha forte que era capaz de se conectar a partir do terminal. Então, meu conselho é, tente com uma senha fácil antes de tentar todo tipo de coisa.

Eu estava executando UTs e comecei a receber mensagens de erro. Não tenho certeza qual foi o problema. Mas quando mudei meu estilo de codificação em INTELLIJ para UTF8, ele começou a funcionar novamente.

access negado para o usuário ‘root’ @ ‘localhost’ (usando a senha yes) hibernate

esta é a minha URL db.url = jdbc: mysql: // localhost: 3306 / somedb? useUnicode = true & connectionCollation = utf8_general_ci & characterSetResults = utf8 & characterEncoding = utf8

Da minha resposta aqui , pensei que isso poderia ser útil:

Eu tentei muitas etapas para corrigir esse problema. Existem tantas fonts de possíveis soluções para esse problema que é difícil filtrar o sentido do absurdo. Eu finalmente encontrei uma boa solução aqui :

Etapa 1: identificar a versão do database

 $ mysql --version 

Você verá alguma saída como esta com o MySQL:

 $ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper 

Ou saída assim para o MariaDB:

 mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1 

Anote qual database e qual versão você está executando, pois você os usará mais tarde. Em seguida, você precisa parar o database para poder acessá-lo manualmente.

Etapa 2: parando o servidor de database

Para alterar a senha do root, você precisa encerrar o servidor de database com antecedência.

Você pode fazer isso para o MySQL com:

 $ sudo systemctl stop mysql 

E para o MariaDB com:

 $ sudo systemctl stop mariadb 

Etapa 3: Reiniciando o servidor de database sem verificação de permissão

Se você executar o MySQL e o MariaDB sem carregar informações sobre privilégios de usuário, ele permitirá que você acesse a linha de comando do database com privilégios de root sem fornecer uma senha. Isso permitirá que você obtenha access ao database sem saber.

Para fazer isso, você precisa parar o database de carregar as tabelas de concessão, que armazenam informações de privilégios de usuário. Como esse é um risco de segurança, você também deve pular a rede para evitar que outros clientes se conectem.

Inicie o database sem carregar as tabelas de permissions ou ativar a rede:

 $ sudo mysqld_safe --skip-grant-tables --skip-networking & 

O e comercial no final deste comando fará com que esse processo seja executado em segundo plano para que você possa continuar a usar seu terminal.

Agora você pode se conectar ao database como o usuário root, que não deve pedir uma senha.

 $ mysql -u root 

Você verá imediatamente um prompt do shell do database.

Prompt do MySQL

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 

MariaDB Prompt

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> 

Agora que você tem access root, você pode alterar a senha do root.

Etapa 4: alterando a senha do root

 mysql> FLUSH PRIVILEGES; 

Agora podemos realmente mudar a senha da raiz.

Para o MySQL 5.7.6 e mais recente , bem como o MariaDB 10.1.20 e mais recente , use o seguinte comando:

 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; 

Para o MySQL 5.7.5 e mais antigo , bem como o MariaDB 10.1.20 e mais antigo , use:

 mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password'); 

Certifique-se de replace new_password pela nova senha escolhida.

Nota: Se o comando ALTER USER não funcionar, geralmente é indicativo de um problema maior. No entanto, você pode tentar UPDATE ... SET para redefinir a senha de root.

[IMPORTANTE] Esta é a linha específica que corrigiu meu problema específico:

 mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost'; 

Lembre-se de recarregar as tabelas de permissions depois disso.

Em ambos os casos, você deve ver a confirmação de que o comando foi executado com sucesso.

 Query OK, 0 rows affected (0.00 sec) 

A senha foi alterada, portanto, agora você pode parar a instância manual do servidor de database e reiniciá-lo como era antes.

Etapa 5: Reinicie o servidor de database normalmente

O tutorial vai em algumas etapas adicionais para reiniciar o database, mas a única parte que usei foi esta:

Para o MySQL, use: $ sudo systemctl start mysql

Para MariaDB, use:

 $ sudo systemctl start mariadb 

Agora você pode confirmar que a nova senha foi aplicada corretamente executando:

 $ mysql -u root -p 

O comando deve agora solicitar a senha recém-atribuída. Digite-o e você deverá obter access ao prompt do database conforme o esperado.

Conclusão

Você agora tem access administrativo ao servidor MySQL ou MariaDB restaurado. Verifique se a nova senha raiz escolhida é forte e segura e mantenha-a em um local seguro.

Atualize a senha vazia na tabela mysql.user do mysql

 use mysql; select host,user,password from mysql.user; update mysql.user set password = PASSWORD('123456') where password = ''; flush privileges;