Como redefinir a senha de root no MySQL e no MariaDB
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