A primeira coisa a fazer é tentar acessar o mysql para corrigir. Mas, se você não tem a senha, como proceder para efetuar as correções? Propomos uma solução simples e prática, permitindo, inclusive, alterar a senha e reparar as tabelas. Para iniciar o trabalho é necessário derrubar o banco de dados. Existem várias formas de se fazer isto:
Utilizando o ps -ax |grep mysql
Verifique o numero do processo, utiliza o comando kill para parar o processo como no exemplo abaixo.
kill -9 numerodoprocesso
Se utilizar o Slackware procede-se da seguinte forma:
#/etc/rc.d/rc.mysqld stop
No caso de ser utilizado o Debian:
#/etc/init.d/mysql stop
Depois de parar o banco é necessário iniciar o mysql, ignorando as tabelas de usuários. Uma dos caminhos para isso é editar o my.cnf que é o arquivo de configuração do mysql, dentro do arquivo encontro [mysql] e abaixo deste basta adicionar mais uma linha com o seguinte conteúdo skyp-grant-tables. Esta opção vai ignorar a tabela responsável pela autenticação dos usuários, iniciando o mysql novamente. Outra forma é iniciar manualmente o mysql:
#mysqld_safe –skyp-grant-tables &
A diferença de editar o my.cnf e fazer o comando no shell é que quando o my.cnf foi editado este fica armazenado e mesmo reiniciando o computador ele continua ignorando a tabela de senhas, não sendo necessário digit-la, e com o comando, se reiniciar ou restartar o serviço, o mesmo volta a pedir senha
Após inicializar o daemon do mysqk, utilizando esta opção, já é possivel acessar o mysql apenas com o comando mysql, sem a necessidade da senha de usuário.
Agora é possivel utilizar o update para alterar o banco de dados mysql na tabela usando os parâmetros de password do usuário e colocando nova senha.
Se preferir, você pode também seguir os passos tratados no artigo Verificação e correção de tabelas corrompidas no MySQL do Eber Duarte aqui no site da SQL Magazine (//www.devmedia.com.br/articles/viewcomp.asp?comp=2013).
Após corrigida e trocada a senha, é interessante voltar o banco de dados como era antigamente. No caso de ter editado o my.cnf, reedite-o, e tire o skyp-grant-tables. No caso de ter apenas inicializado o serviço, utilize o ps -ax |grep mysql e derrube o processo ,conforme visto anteriormente.
Com isto é possível corrigir o banco de dados e alterar a senha sem perder os dados. Existe moutras técnicas que chegam ao mesmo resultado, mas julgamos que a explicada neste artigo apresenta maior simplicidade e praticidade para reestabelecer a senha perdida do banco de dados.
Abraços e até breve