Última atualização:
MySQL: como recuperar a senha em 3 passos
MySQL: como recuperar a senha em 3 passos

Como redefinir a senha de root no MySQL e no MariaDB

Nawarian
Nawarian mysql

As vezes é necessário redefinir a senha do usuário root da base de dados MySQL. Seja para retomar controle de um banco ou mesmo para trabalhar com backups. Neste artigo rápido eu vou te mostrar como proceder para redefinir a senha de root.

1. Reiniciar o servidor no modo de segurança

Primeiramente nós precisamos interromper o servidor MySQL para podemos entrar em modo de segurança. O modo de segurança do MySQL vai nos permitir acessar o banco de dados sem nenhuma senha e com todas as permissões que precisamos para realizar quaisquer alterações.

🚨 Não rode o servidor em modo de segurança em produção. Qualquer usuário que realizar login no seu servidor terá acesso irrestrito a base de dados!

Vamos primeiro interromper o serviço mysql:

$ sudo service mysql stop

O comando acima assume que seu servidor utiliza service, outras variações podem incluir systemctl ou init.

Após interromper o serviço mysql podemos inicializar o mesmo serviço, mas desta vez utilizando o daemon mysqld_safe, da seguinte maneira:

$ sudo mysqld_safe --skip-grant-tables &

A mágica acontece na flag --skip-grant-tables que nos permite fazer login e alterar qualquer coisa no servidor sem verificar permissões. O & ao fim do comando coloca este daemon para rodar em plano de fundo, desta forma nós conseguimos continuar utilizando o mesmo terminal para seguir os próximos passos.

2. Alterar senha de root

Agora que o MySQL está rodando em modo de segurança e sem verificar permissões, podemos facilmente realizar o login via linha de comando da seguinte maneira:

$ mysql -uroot

O sistema sequer vai lhe pedir uma senha. A partir daqui estamos no console do MySQL e podemos rodar quaisquer comandos SQL ou comandos específicos do MySQL.

Para alterar a senha do usuário root vamos rodar o comando ALTER USER como descrito abaixo:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NOVA SENHA ROOT';
mysql> FLUSH PRIVILEGES;

O primeiro comando, ALTER USER, modifica a senha do usuário root para NOVA SENHA ROOT (altere o comando para utilizar a senha desejada). Este comando também especifica que o usuário root só pode acessar o banco de dados quando na mesma máquina que o servidor (localhost). Portanto não é possível acessar este banco como root a partir de uma outra máquina.

O segundo comando, FLUSH PRIVILEGES, ordena que o MySQL reavalie sua cadeia de usuários e permissões imediatamente.

3. Reiniciar o servidor MySQL em modo normal

Agora que terminamos de corrigir a senha do usuário root podemos interromper o modo de segurança e reiniciar o servidor em modo normal de operação.

Para interromper o modo de segurança podemos rodar o seguinte comando:

$ mysqladmin -uroot -p shutdown

Note que agora o servidor vai pedir a senha para o usuário root, que deverá ser a mesma que você definiu no passo 2.

Podemos agora reiniciar o servidor MySQL em modo normal:

$ sudo service mysql start

Se tudo correu bem, o servidor estará operando normalmente e a nova senha se aplicará ao usuário root.

Comentários