Guia Técnico para Recuperação da Senha de Root no MySQL

Perder o acesso administrativo ao MySQL é um desafio crítico para DBAs e desenvolvedores. Uma vez que o usuário 'root' detém os privilégios máximos, sua recuperação exige intervenções no processo de inicialização do servidor. Abaixo, detalhamos os dois métodos mais eficazes para redefinir a credencial administrativa.

Método 1: Utilizando o Parâmetro --init-file

Este método consiste em criar um script SQL que o MySQL executará automaticamente durante o boot. É uma abordagem segura, pois não expõe o banco de dados a conexões externas sem autenticação. ### 1. Encerrar a instância do MySQL

Primeiro, é necessário identificar e parar todos os processos ativos do servidor. No Linux, você pode localizar os IDs dos processos (PIDs) com o seguinte comando: ``` pgrep -af mysqld


Após identificar os PIDs do `mysqld_safe` e do `mysqld`, encerre-os. É importante encerrar o processo guardião (safe) primeiro para evitar que ele reinicie o serviço automaticamente: ```
kill -15 [PID_MYSQLD_SAFE]
kill -15 [PID_MYSQLD]

2. Preparar o script de atualização

Crie um arquivo de texto simples, por exemplo, em /tmp/recuperar_acesso.sql, contendo o comando de alteração de senha: ``` ALTER USER 'root'@'localhost' IDENTIFIED BY 'NovaSenhaSegura@2024';


Garanta que o usuário do sistema que executa o MySQL tenha permissão de leitura sobre este arquivo: ```
chmod 644 /tmp/recuperar_acesso.sql

3. Reiniciar com o arquivo de inicialização

Inicie o servidor apontando para o arquivo criado. O MySQL executará o comando e a senha será atualizada imediatamente: ``` mysqld_safe --init-file=/tmp/recuperar_acesso.sql &


Após confirmar o acesso com a nova senha, remova o arquivo temporário por questões de segurança. Método 2: Modo de Segurança (--skip-grant-tables)
-------------------------------------------------

Esta técnica desabilita temporariamente o sistema de privilégios do MySQL, permitindo login sem senha. Por segurança, versões modernas do MySQL frequentemente desabilitam conexões de rede (`--skip-networking`) automaticamente ao usar este parâmetro. ### 1. Iniciar em modo de bypass

Com o serviço parado, inicie o binário manualmente ignorando as tabelas de permissão: ```
mysqld_safe --skip-grant-tables --skip-networking &

2. Acessar e atualizar as credenciais

Conecte-se ao terminal do MySQL sem fornecer senha: ``` mysql -u root


Dentro do ambiente interativo, siga a sequência de comandos abaixo para recarregar as permissões e definir a nova senha: ```
-- Recarrega os privilégios para permitir o comando ALTER
FLUSH PRIVILEGES;

-- Define a nova credencial
ALTER USER 'root'@'localhost' IDENTIFIED BY 'AcessoRestaurado_99';

-- Sai do console
EXIT;

3. Normalizar o serviço

Por fim, desligue a instância temporária e inicie o MySQL da forma convencional para restaurar as camadas de segurança e conectividade de rede: ``` mysqladmin -u root -p shutdown systemctl start mysql


Agora o acesso administrativo estará disponível utilizendo a nova credencial definida no processo.

Tags: MySQL database-administration SQL Security linux-server

Publicado em 7-1 02:56