Eu tenho usado o XAMPP (no Windows XP/XAMPP 1.7.4 /PHP 5.3.5) por um bom tempo, e na manhã passada comecei a receber algumas mensagens estranhas enquanto estava desenvolvendo meu site. Aconteceu ontem e começou como algo que pensei que poderia lidar, mas aparentemente não consegui. Essas mensagens eram algumas sobre tempos limite, outras sobre "não é possível conectar" para minha string de conexão dentro do meu site.
Eu estava pensando que o site poderia estar sob ataque, já que a manhã passada foi como qualquer outra manhã. Na verdade, posso iniciar a página de administração (o botão próximo ao apache "iniciar/parar"), mas não consigo fazer login no MySQL. Acho que o root não foi definido, então tentei usar a documentação para redefini-lo.
O que acontece agora é que simplesmente não consigo fazer login no servidor MySQL, não importa o que eu faça. Continuo recebendo acesso negado para ''@'localhost' e 'root@localhost' se tento logar como root.
O que posso fazer?
Você precisa reiniciar o mysql a partir da linha de comando do Linux assim:
Se você estiver usando Windows, adicione as duas opções na seção mysqld de my.ini:
e depois correr
Isso permitirá o login imediato sem autenticação e sem nenhuma conexão remota se infiltrando em você.
então
Pelo menos você terá um usuário localhost nomeado
mynewuser
com privilégios suficientes para fazer login.Você deve então executar esta consulta:
e veja se algum novo usuário foi adicionado por um hacker. Se você vir algum usuário remoto que não deveria estar lá, poderá removê-lo com:
Se você estiver usando o Windows, lembre-se de remover
skip-grants-tables
eskip-networking
de my.ini, então pare e inicie o serviço mysql.EMBARGO
Faça um backup
/var/lib/mysql/mysql
antes de fazer qualquer coisa.ATUALIZAÇÃO 2011-09-26 10:41 EDT
Se a consulta INSERT INTO mysql.user não funcionar, significa simplesmente que a consulta não é compatível com a versão do mysql da qual tirei este exemplo.
Para saber a consulta INSERT correta para o usuário, execute esta consulta:
Você verá todas as colunas com o tipo ENUM('Y','N') para cada privilégio. Ajuste a consulta INSERT para corresponder a todas as colunas e, em seguida, execute esse INSERT.
Para obter as colunas exatas para definir como Y para todos os privilégios, use esta consulta:
Isso apresentará colunas para definir, independentemente da versão do MySQL que você está usando.