Como redefinir a senha root no MySQL 8.0
No caso infeliz de esquecer ou perder sua senha root do MySQL, você certamente precisará de uma maneira de recuperá-la de alguma forma. O que precisamos saber é que a senha está armazenada na tabela de usuários. Isso significa que precisamos descobrir uma maneira de contornar a autenticação do MySQL, para que possamos atualizar o registro da senha.
Felizmente, é fácil de conseguir e este tutorial irá guiá-lo através do processo de recuperação ou redefinição da senha root na versão MySQL 8.0.
De acordo com a documentação do MySQL, existem duas maneiras de redefinir a senha root do MySQL. Analisaremos ambos.
Redefinir a senha root do MySQL usando –init-file
Uma das maneiras de redefinir a senha root é criar um arquivo local e então iniciar o serviço MySQL usando a opção --init-file
conforme mostrado.
vim /home/user/init-file.txt
É importante que você tenha certeza de que o arquivo pode ser lido pelo usuário mysql. Dentro desse arquivo cole o seguinte:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
No item acima altere “new_password” pela senha que deseja usar.
Agora certifique-se de que o serviço MySQL esteja parado. Você pode fazer o seguinte:
systemctl stop mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
Em seguida, execute o seguinte:
mysqld --user=mysql --init-file=/home/user/init-file.txt --console
Isso iniciará o serviço MySQL e durante o processo executará o arquivo init que você criou e assim a senha do usuário root será atualizada. Certifique-se de excluir o arquivo assim que a senha for redefinida.
Certifique-se de parar o servidor e iniciá-lo normalmente depois disso.
systemctl stop mysqld.service # for distros using systemd
systemctl restart mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
/etc/init.d/mysqld restart # for distros using init
Agora você deve conseguir se conectar ao servidor MySQL como root usando a nova senha.
mysql -u root -p
Redefinir a senha root do MySQL usando –skip-grant-tables
A segunda opção que temos é iniciar o serviço MySQL com a opção --skip-grant-tables
. Isso é menos seguro, pois enquanto o serviço é iniciado dessa forma, todos os usuários podem se conectar sem senha.
Se o servidor for iniciado --skip-grant-tables
, a opção --skip-networking
será automaticamente ativada para que conexões remotas não estejam disponíveis.
Primeiro certifique-se de que o serviço MySQL esteja parado.
systemctl stop mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
Em seguida, inicie o serviço com a seguinte opção.
mysqld --skip-grant-tables --user=mysql &
Então, você pode se conectar ao servidor mysql simplesmente executando.
mysql
Como o gerenciamento de contas é desabilitado quando o serviço é iniciado com a opção --skip-grant-tables
, teremos que recarregar as concessões. Dessa forma poderemos alterar a senha posteriormente:
FLUSH PRIVILEGES;
Agora você pode executar a seguinte consulta para atualizar a senha. Certifique-se de alterar “new_password” pela senha real que deseja usar.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
Agora pare o servidor MySQL e inicie-o normalmente.
systemctl stop mysqld.service # for distros using systemd
systemctl restart mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
/etc/init.d/mysqld restart # for distros using init
Você deverá conseguir se conectar com sua nova senha.
mysql -u root -p
Você também pode gostar de ler estes artigos úteis relacionados ao MySQL.
- Como instalar o MySQL 8 no CentOS, RHEL e Fedora
- 15 dicas úteis de ajuste e otimização de desempenho do MySQL
- 12 práticas de segurança MySQL para Linux
- 4 ferramentas úteis de linha de comando para monitorar o desempenho do MySQL
- Comandos de administração de banco de dados MySQL
Conclusão
Neste artigo você aprendeu como redefinir a senha root perdida do servidor MySQL 8.0. Espero que o processo tenha sido fácil.