terça-feira, 2 de novembro de 2010

Como resetar a senha de root do MySQL


Essa postagem é uma tradução, por isso não está incluída na Licença FDL do restante do conteúdo desse blog. Para informações sobre a licença do Texto, entre em contato com o autor original no blog: http://www.debian-administration.org/articles/442




Estava fazendo alguns experimentos com redes cliente-servidor em máquinas virtuais e, na hora de acessar o PHPMyAdmin do cliente, esqueci a senha de root do MySQL. Mesmo acessando o cliente do banco direto na linha de comando do servidor, o acesso era negado. Mostro aqui, então, a tradução/adaptação do artigo Resetting a forgotten MySQL root password, o qual solucionou o problema.

Vamos partir do pressuposto de que você esqueceu a senha e não tem acesso ao banco. O que fazer?

O primeiro passo é parar o serviço MySQL que, presumivelmente, está em execução. Em distros Debian-Like, isso é feito com um

# /etc/init.d/mysql stop


Já no Fedora e em outros Red-Likes, utilize o comando

# service mysql stop


Agora, você deve iniciar o banco de dados em background, via comando mysqld_safe:

# /usr/bin/mysqld_safe --skip-grant-tables &
[1] 6702
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6763]: started


Aqui você pode ver que a nova tarefa (número 1) foi iniciada e que o servidor está rodando com o PID 6702.

Agora que o servidor está sendo executado com a flag --skip-grant-tables , você pode conectar-se a ele sem uma senha e completar a tarefa:


$ mysql --user=root mysql
Enter password:

mysql> UPDATE user SET Password=PASSWORD('digite-sua-nova-senha-aqui') WHERE User='root';
Query OK, 2 rows affected (0.04 sec)
Rows matched: 2 Changed: 2 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)

mysql> exit
Bye



Agora, você deve parar o servidor novamente, desta forma você poderá voltar a rodar um servidor MySQL seguro com restrições de senha no lugar. Primeiramente, traga o servidor que você deixou rodando em background para o primeiro plano usando o comando fg e mate-o em seguida pressionando CTRL + C.

Isso permitirá que você inicie o servidor agora:


# /etc/init.d/mysql start
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..


Agora, tudo deve estar feito e você deve ter ganhado acesso novamente aos seus bancos de dados. Você deve verificar isso ao conectar-se com sua nova senha:


# mysql --user=root --pass=sua-nova-senha
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 5 to server version: 5.0.24a-Debian_4-log

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> exit
Bye

Nenhum comentário:

Postar um comentário