Publiquei esse conteúdo antes no meu Blog, e como a visibilidade aqui no VOL é extremamente superior ao meu humilde Blog, resolvi postá-lo para os interessados que talvez tenham este problema.
Trata-se do erro:1045 (28000): Access denied for user 'root'@'localhost' (using password: YES). Onde as bases e usuários estão funcionando normalmente, exceto o acesso para o usuário 'root' ao
MySQL.
Problema:
Já me deparei com uma situação em que o MySQL está funcionando aparentemente normal, todos os bancos estavam sendo acessados sem problemas e o banco de dados permitia
logar-se com todos os usuários normais em suas respectivas bases.
O problema se dava na hora de efetuar logon com usuário administrador (root), o mesmo não permitia logon retornando a seguinte mensagem de erro: no terminal:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES).
E No PhpMyAdmin retornava mensagem:
Acesso negado para usuário root.
Pois bem, fiz algumas pesquisas e consegui encontrar uma solução. Compilei algumas dicas neste tutorial para que eu não precise buscar e 'quebrar a cabeça' novamente para resolver o mesmo problema. E também fica para quem se deparar com esta solução.
Configurando o Apache e MySQL
Primeiro, o Mysql:
# sudo /etc/init.d/mysql stop
Depois abra o arquivo de configuração do 'php5' e procure pela linha que habilita entrada em modo segurança:
# vim /etc/php5/apache2/php.ini
Dentro do vim no modo função, digite: /safe (para localizar a linha) e altere-a para 'On'.
safe_mode = On
Saia do editor VIM e salve as alterações.
Reinicie o MySQL em modo de segurança (safe_mod):
# safe_mysqld -skip-grant-tables &
Com MySQL em modo segurança, selecione a tabela mysql e depois altere a senha do usuário 'root' e conceda todos os privilégios. Saia do MySQL com o comando EXIT.
Mysql>
USE mysql
mysql>
UPDATE user SET password=password("nova_senha") WHERE user="root";
Resultado :
Query OK, 1 row affected (0.00 sec)
Rows matched: 3 Changed: 1 Warnings: 0
mysql>
flush privileges;
Resultado:
Query OK, 0 rows affected (0.00 sec)
mysql>
exit
Configurações finais e Referências
Agora no Shell do
Linux, mate todos os processos do MySQL:
# killall mysqld mysql
Reinicie o MySQL normalmente:
# /etc/init.d/mysql start
Para testar, acesse o MySQL pelo terminal:
# mysql -u root -p
E pelo navegador através do PhpMyAdmin:
Entre com usuário e senha de 'root' normalmente, o problema foi resolvido.
Referências:
Publicado antes em meu Blog:
Amigo, Felipepesena, verifiquei seu comentário e fiquei até feliz em ter uma solução melhor para o problema, porem nao testei na primeira vez que vi o comentário. Hoje precisei resolver o problema novamente, e constatei que a sua dica não se aplica a todas as situações. gera o erro abaixo da mesma forma nao permitindo o acesso: veja:
mysqladmin -u root password
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
Sendo assim, foi necessário reparar da mesma forma que postei antes. De qualquer forma valeu o comentário, pois possivelmente servirá para alguém que esteja com cenário similar ao seu.