Imagine-se como novo funcionário de uma empresa que utiliza um sistema com banco de dados mysql, e que o antecessor não informou as senhas do banco de dados, ou por algum motivo a senha foi perdida? Enquanto o sistema não acusar problema, tudo bem, mas e se surgirem problemas como tabelas corrompidas?

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