Em um evento infeliz de esquecer ou perder sua senha de 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 de senha.
Felizmente, existe uma maneira fácil de alcançar e este tutorial irá guiá-lo através do processo de recuperação ou redefinição de senha de root na versão MySQL 8.0.
De acordo com a documentação do MySQL, existem duas maneiras de redefinir a senha raiz do MySQL. Analisaremos ambos.
Redefinir a senha raiz do MySQL usando –init-file
Uma das maneiras de redefinir a senha do root é criar um arquivo local e iniciar o serviço MySQL usando
--init-file
opção como 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';
Na alteração acima “new_password ” com a senha que você deseja usar.


Agora certifique-se de que o serviço MySQL está 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 ele 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 ser capaz de se conectar ao servidor MySQL como root usando a nova senha.
# mysql -u root -p


Redefinir a senha raiz do MySQL usando –skip-grant-tables
A segunda opção que temos é iniciar o serviço MySQL com o
--skip-grant-tables
opção. Isso é menos seguro, pois enquanto o serviço é iniciado dessa maneira, todos os usuários podem se conectar sem senha. Se o servidor for iniciado
--skip-grant-tables
, a opção para --skip-networking
é ativado automaticamente para que as conexões remotas não estejam disponíveis. Primeiro, certifique-se de que o serviço MySQL está 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
--skip-grant-tables
opção, 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 você 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ê deve 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 do MySQL para Linux
- 4 ferramentas de linha de comando úteis para monitorar o desempenho do MySQL
- Comandos de administração do banco de dados MySQL
Conclusão
Neste artigo você aprendeu como redefinir a senha de root perdida para o servidor MySQL 8.0. Espero que o processo tenha sido fácil.