Redefinir sua senha root do MySQL ou MariaDB

Introdução

Esquecer senhas acontece com todos nós. Se você esquecer ou perder a senha root do seu banco de dados MySQL ou MariaDB, você ainda poderá obter acesso e redefinir a senha se tiver acesso ao servidor e uma conta de usuário habilitada para sudo.

Este tutorial abordará a redefinição da senha root para versões mais antigas e mais recentes do MySQL e MariaDB.

Pré-requisitos

Para recuperar sua senha root do MySQL/MariaDB, você precisará de:

Acesso ao servidor MySQL ou MariaDB Linux com um usuário sudo.

1- Identificando a versão do banco de dados

A maioria das distribuições Linux modernas vem com MySQL ou MariaDB, um substituto popular que é totalmente compatível com MySQL. Dependendo do banco de dados utilizado e sua versão, você deve utilizar comandos diferentes para recuperar a senha root.

Você pode verificar sua versão com o seguinte comando:

mysql --version

Você verá alguns resultados como este com MySQL:

MySQL output
mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

Ou produzido assim com MariaDB:

MariaDB output
mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

Observe qual banco de dados e versão você está executando, pois você os usará mais tarde. Em seguida, você precisa parar o banco de dados para acessá-lo manualmente.

2- Parando o Servidor de Banco de Dados

Para alterar a senha root, você deve encerrar o servidor de banco de dados previamente.

Desativando Mysql:

sudo systemctl stop mysql

Desativando Mariadb:

sudo systemctl stop mariadb

Depois que o servidor de banco de dados for interrompido, você o acessará manualmente para redefinir a senha root.

3- Reiniciando o servidor de banco de dados sem verificação de permissão

Se você executar MySQL e MariaDB sem carregar informações sobre privilégios de usuário, poderá acessar a linha de comando do banco de dados com privilégios de root sem fornecer uma senha. Isso permitirá que você obtenha acesso ao banco de dados sem saber.

Para fazer isso, você deve impedir que o banco de dados carregue as tabelas de concessão, que armazenam informações de privilégio do usuário. Como isso é um risco à segurança, você também deve ignorar a rede para evitar que outros clientes se conectem.

Inicie o banco de dados sem carregar as tabelas de concessão ou ativar a rede:

sudo mysqld_safe --skip-grant-tables --skip-networking &

O e comercial no final deste comando fará com que este processo seja executado em segundo plano para que você possa continuar a usar seu terminal.

Agora, você pode se conectar ao banco de dados como usuário root, o que não deve exigir senha.

mysql -u root  

Você verá imediatamente um prompt do shell do banco de dados.

Solicitação do MySQL:

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Solicitação do MariaDB:

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Agora que você tem acesso root, você pode alterar a senha root.

4- Alterando a senha root

Uma maneira simples de alterar a senha root para versões modernas do MySQL é usando o comando ALTER USER. No entanto, este comando não funcionará agora porque as tabelas de concessão não estão carregadas.

Vamos dizer ao servidor de banco de dados para recarregar as tabelas de permissões emitindo o comando FLUSH PRIVILEGES.

FLUSH PRIVILEGES;

Agora podemos alterar a senha do root.

Use o seguinte comando para MySQL 5.7.6 e mais recente e MariaDB 10.1.20 e mais recente.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'nova_senha';

Para MySQL 5.7.5 e anteriores, bem como MariaDB 10.1.20 e anteriores, use:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('nova_senha');

Certifique-se de substituir nova_senha pela nova senha de sua escolha.

Nota: Se o comando ALTER USER não funcionar, geralmente indica um problema maior. No entanto, você pode tentar UPDATE… SET para redefinir a senha root.

UPDATE mysql.user SET authentication_string = PASSWORD('nova_senha') WHERE User = 'root' AND Host = 'localhost';

Em ambos os casos, você deverá ver a confirmação de que o comando foi executado com sucesso da seguinte forma:

Output
Query OK, 0 rows affected (0.00 sec)

A senha foi alterada, então agora você pode parar a instância manual do servidor de banco de dados e reiniciá-lo como estava antes.

5- Reinicie o servidor de banco de dados normalmente

Primeiro, pare a instância do servidor de banco de dados que você iniciou manualmente na Etapa 3. Este comando procura o PID, ou ID do processo, do processo MySQL ou MariaDB e envia SIGTERM para instruí-lo a sair sem problemas após realizar as operações de limpeza. Você pode aprender mais neste tutorial de gerenciamento de processos Linux.

Para MySQL, use:

sudo kill `cat /var/run/mysqld/mysqld.pid`

Para MariaDB, use:

sudo kill `/var/run/mariadb/mariadb.pid`

Em seguida, reinicie o serviço usando systemctl.

Para iniciar MySQL, use:

sudo systemctl start mysql

Para iniciar MariaDB, use:

sudo systemctl start mariadb

Agora você pode confirmar se a nova senha foi aplicada corretamente executando:

mysql -u root -p

O comando agora deve solicitar a senha recém-atribuída. Insira-o e você deverá obter acesso ao prompt do banco de dados conforme esperado. Conclusão

Agora você tem acesso administrativo ao servidor MySQL ou MariaDB restaurado. Certifique-se de que a nova senha root escolhida seja forte e segura e mantenha-a em um local seguro.

Haut de page