15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
21.10.2024

Como Redefinir Manualmente Sua Senha de Administrador do WordPress

Perder o acesso à sua conta de administrador do WordPress não tem de significar perder o controlo do seu site. Se o fluxo padrão de e-mail “Perdeu a sua palavra-passe?” estiver quebrado — devido a configurações de e-mail incorretas, um endereço de e-mail inacessível ou um registo de utilizador corrompido — pode contorná-lo completamente redefinindo a palavra-passe diretamente ao nível da base de dados, do sistema de ficheiros ou da shell.

Este guia abrange quatro métodos testados em batalha: phpMyAdmin, FTP via functions.php, WP-CLI via SSH e o Script de Redefinição de Emergência do WordPress. Cada método é explicado com passos exatos, advertências de segurança e os cenários específicos onde é a escolha certa.

Quando o Fluxo de Redefinição Padrão Falha

Antes de recorrer a um método manual, compreenda por que razão a redefinição integrada falha. As causas mais comuns são:

  • Entrega de e-mail do WordPress quebradawp_mail() depende da função mail() do PHP ou de um plugin SMTP. Se nenhum estiver configurado, o e-mail de redefinição é descartado silenciosamente.
  • Sem acesso à caixa de entrada do e-mail registado — a conta foi criada com um endereço inativo.
  • Tabela wp_users corrompida — raro, mas possível após uma migração falhada ou conflito de plugins.
  • Bloqueado completamente do wp-admin — plugins de proteção contra força bruta (Wordfence, Limit Login Attempts) podem bloquear o próprio endpoint de redefinição.

Identificar a causa raiz é importante porque alguns métodos (WP-CLI, phpMyAdmin) corrigem a palavra-passe sem tocar no sistema de e-mail, enquanto outros (o script de emergência) requerem acesso HTTP ao site.

Método 1: Redefinir a Palavra-passe via phpMyAdmin

Ideal para: Ambientes de alojamento partilhado onde o SSH não está disponível, mas o cPanel ou um painel de controlo semelhante está acessível.

O phpMyAdmin dá-lhe acesso direto de leitura/escrita à base de dados MySQL ou MariaDB que armazena todas as credenciais de utilizador do WordPress. As palavras-passe são armazenadas como hashes bcrypt (WordPress 6.x+) ou hashes MD5 (instalações legadas). O seletor de funções integrado do phpMyAdmin trata do hashing automaticamente.

Passo 1: Abrir o phpMyAdmin a partir do Seu Painel de Controlo

Inicie sessão no seu painel de controlo de alojamento — cPanel, DirectAdmin ou um painel personalizado. Localize a secção Bases de Dados e clique em phpMyAdmin. Se estiver num VPS com cPanel, o caminho é normalmente cPanel > Bases de Dados > phpMyAdmin.

Passo 2: Selecionar a Base de Dados do WordPress

Na barra lateral esquerda, clique no nome da base de dados associada à sua instalação do WordPress. Se não tiver a certeza de qual base de dados é a correta, abra wp-config.php no diretório raiz do seu site e procure a constante DB_NAME.

Passo 3: Abrir a Tabela wp_users

Expanda as tabelas da base de dados e clique em wp_users. Se a sua instalação utilizar um prefixo de tabela personalizado (definido por $table_prefix em wp-config.php), a tabela terá o nome <prefix>_users — por exemplo, site7_users.

Passo 4: Editar a Linha do Utilizador Administrador

  1. Encontre a linha onde user_login corresponde ao seu nome de utilizador administrador. Para a maioria das instalações padrão, esta é a linha com ID = 1.
  2. Clique em Editar (o ícone de lápis).
  3. Localize o campo user_pass.
  4. No menu suspenso Função ao lado de user_pass, selecione MD5.
  5. No campo Valor, escreva a sua nova palavra-passe em texto simples.
  6. Desloque-se para baixo e clique em Executar.

Nota técnica importante: Selecionar MD5 aqui é suficiente para o início de sessão imediato porque o WordPress realiza uma verificação MD5 legada no início de sessão e, em seguida, re-faz automaticamente o hash da palavra-passe utilizando o seu algoritmo phpass mais robusto ou bcrypt após autenticação bem-sucedida. Não precisa de gerar manualmente um hash bcrypt.

Passo 5: Verificar a Alteração

Navegue até à página de início de sessão do WordPress e inicie sessão com a nova palavra-passe. Se o início de sessão for bem-sucedido, o WordPress irá silenciosamente atualizar o hash na base de dados para o algoritmo atual.

Método 2: Redefinir a Palavra-passe via FTP Modificando functions.php

Ideal para: Situações onde o phpMyAdmin não está disponível, mas as credenciais FTP/SFTP estão acessíveis.

Este método injeta uma chamada de redefinição de palavra-passe diretamente no ciclo de execução do WordPress, adicionando temporariamente código ao ficheiro functions.php do tema ativo.

Passo 1: Ligar via FTP

Utilize um cliente FTP como FileZilla ou Cyberduck. Introduza o seu host FTP, nome de utilizador, palavra-passe e porta (21 para FTP simples, 22 para SFTP — prefira sempre SFTP quando disponível). Navegue até:

/public_html/wp-content/themes/<your-active-theme>/

Para confirmar qual tema está ativo sem iniciar sessão no wp-admin, verifique a tabela wp_options no phpMyAdmin para a chave de opção template.

Passo 2: Descarregar e Editar functions.php

Descarregue functions.php para a sua máquina local. Abra-o num editor de código (VS Code, Sublime Text ou qualquer editor que preserve a codificação UTF-8 sem BOM). Adicione a seguinte linha no final do ficheiro:

<?php
// Temporary password reset — REMOVE IMMEDIATELY AFTER USE
add_action( 'init', function() {
    wp_set_password( 'YourNewSecurePassword123!', 1 );
});

Substitua 'YourNewSecurePassword123!' pela palavra-passe escolhida. O segundo argumento (1) é o ID do utilizador. Se a sua conta de administrador não tiver o ID 1, consulte primeiro a tabela wp_users para confirmar o ID correto.

Envolver a chamada em add_action( 'init', ... ) é mais seguro do que chamar wp_set_password() diretamente no nível superior do ficheiro, porque garante que as funções principais do WordPress estão totalmente carregadas antes da execução.

Passo 3: Carregar e Iniciar Sessão

Guarde o ficheiro e carregue-o de volta para o servidor, substituindo o original. Carregue qualquer página do seu site WordPress (mesmo a página inicial) para acionar o hook init e executar a alteração de palavra-passe. Em seguida, navegue até /wp-login.php e inicie sessão com a nova palavra-passe.

Passo 4: Remover o Código Imediatamente

Este passo é obrigatório. Deixar o código de redefinição em functions.php significa que cada carregamento de página redefine a palavra-passe para o valor codificado, criando uma vulnerabilidade de segurança crítica. Descarregue functions.php novamente, elimine as linhas que adicionou e volte a carregar.

Método 3: Redefinir a Palavra-passe via WP-CLI (Linha de Comandos SSH)

Ideal para: Programadores e administradores de sistemas com acesso SSH a um VPS ou servidor dedicado. Este é o método mais rápido e limpo.

O WP-CLI é a interface de linha de comandos oficial para o WordPress. Pode gerir utilizadores, plugins, temas e operações de base de dados sem utilizar um navegador. Se estiver a executar o WordPress num plano de Alojamento VPS ou num Servidor Dedicado, o WP-CLI está quase certamente disponível ou é trivialmente instalável.

Passo 1: Verificar se o WP-CLI Está Instalado

wp --info

Se o comando não for encontrado, instale-o:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Passo 2: Navegar até ao Diretório Raiz do WordPress

cd /var/www/html

Ajuste o caminho para corresponder ao seu diretório raiz real. Pode verificar se está no diretório correto verificando a existência de wp-config.php:

ls wp-config.php

Passo 3: Redefinir a Palavra-passe

wp user update 1 --user_pass="YourNewSecurePassword123!" --allow-root

O sinalizador --allow-root é necessário se estiver a executar o comando como utilizador root. Substitua 1 pelo ID de utilizador real se necessário. Para consultar primeiro o ID correto:

wp user list --fields=ID,user_login,user_email --allow-root

Passo 4: Confirmar a Atualização

O WP-CLI irá apresentar Success: Updated user 1. após a conclusão. Pode verificar imediatamente a alteração:

wp user get 1 --field=user_pass --allow-root

Isto devolve o novo hash bcrypt, confirmando que o registo foi atualizado. Inicie sessão no wp-admin para concluir o processo.

Caso especial — instalações multisite: No WordPress Multisite, prefixe o comando com --url=yoursite.com para direcionar o subsite correto:

wp user update 1 --user_pass="YourNewSecurePassword123!" --url=yoursite.com --allow-root

Método 4: Redefinir a Palavra-passe via Script de Emergência do WordPress

Ideal para: Cenários onde tem acesso FTP mas sem SSH, sem phpMyAdmin, e o método functions.php é impraticável (por exemplo, o tema ativo é um tema de blocos sem functions.php).

O Codex do WordPress fornece um script PHP de redefinição de emergência autónomo (emergency.php) que funciona independentemente da instalação do WordPress. Solicita uma nova palavra-passe, faz o hash corretamente e escreve-a diretamente na base de dados utilizando as credenciais de wp-config.php.

Passo 1: Obter o Script

Descarregue o script do repositório oficial do WordPress no GitHub ou do Codex. A fonte canónica é:

https://codex.wordpress.org/Resetting_Your_Password#Through_the_emergency_password_reset_script

Guarde o ficheiro como emergency.php.

Passo 2: Carregar para a Raiz do WordPress

Utilizando o seu cliente FTP, carregue emergency.php para o mesmo diretório que contém wp-config.php — normalmente /public_html/ ou /var/www/html/.

Passo 3: Executar o Script num Navegador

Abra um navegador e navegue até:

https://yourdomain.com/emergency.php

O script irá ler wp-config.php automaticamente para obter as credenciais da base de dados e, em seguida, apresentar um formulário para introduzir e confirmar uma nova palavra-passe. Submeta o formulário para aplicar a alteração.

Passo 4: Eliminar o Script Imediatamente

Isto é crítico. O script não tem camada de autenticação — qualquer pessoa que conheça o URL pode utilizá-lo para assumir o controlo do seu site. Elimine-o no momento em que recuperar o acesso:

rm /var/www/html/emergency.php

Ou elimine-o via FTP. Verifique a eliminação tentando carregar o URL novamente — deve devolver um erro 404.

Comparação de Métodos

MétodoRequer SSHRequer FTPRequer Acesso à BDModifica Ficheiros do TemaVelocidadeRisco de Segurança se Deixado Ativo
phpMyAdminNãoNãoSim (via painel)NãoRápidoNenhum
`functions.php` via FTPNãoSimNãoSimMédioCrítico
WP-CLI via SSHSimNãoNãoNãoMais RápidoNenhum
Script de EmergênciaNãoSimNãoNãoMédioCrítico

Reforço de Segurança Após uma Redefinição de Palavra-passe

Recuperar o acesso é apenas o primeiro passo. Uma redefinição manual forçada muitas vezes sinaliza um problema mais profundo — uma conta comprometida, um servidor mal configurado ou uma pilha de e-mail quebrada. Resolva estes problemas imediatamente:

  • Audite os inícios de sessão recentes. Verifique wp_usermeta para session_tokens para ver as sessões ativas. Destrua todas as sessões com wp user session destroy --all --allow-root.
  • Rotacione as chaves secretas. Gere novos valores em https://api.wordpress.org/secret-key/1.1/salt/ e substitua as constantes correspondentes em wp-config.php. Isto invalida todos os cookies existentes.
  • Corrija a entrega de e-mail do WordPress. Instale um plugin SMTP (WP Mail SMTP, Postman SMTP) e ligue-o a um serviço de e-mail transacional (SendGrid, Mailgun, Amazon SES) para que o fluxo de redefinição padrão funcione no futuro.
  • Ative a autenticação de dois fatores. Plugins como WP 2FA ou Google Authenticator adicionam uma segunda camada de verificação que torna os bloqueios por força bruta muito menos prováveis.
  • Reveja as permissões de ficheiros. wp-config.php deve ser 640 ou 600. O ficheiro functions.php deve ser 644. Ficheiros com permissão de escrita para todos (777) são um sinal de alerta imediato.
  • Verifique contas de administrador não autorizadas. Execute wp user list --role=administrator --allow-root e remova quaisquer contas que não reconheça.

Para ambientes de produção alojados num Servidor Dedicado, reveja também /var/log/auth.log (ou /var/log/secure em sistemas baseados em RHEL) para tentativas de força bruta SSH que possam ter precedido o bloqueio.

Se o seu site lida com dados sensíveis de utilizadores ou transações de e-commerce, complemente o seu início de sessão reforçado com um Certificado SSL devidamente emitido para garantir que as credenciais nunca são transmitidas em texto simples.

Matriz de Decisão: Qual Método Deve Utilizar?

Utilize esta lista de verificação para selecionar o método correto para a sua situação:

  • Tem acesso ao cPanel ou DirectAdmin — utilize o phpMyAdmin (Método 1). É o mais seguro e não requer modificações de ficheiros.
  • Tem FTP/SFTP mas sem painel de base de dados — utilize functions.php (Método 2), mas defina um lembrete no calendário para remover o código nos cinco minutos após iniciar sessão.
  • Tem acesso SSH a um VPS ou servidor dedicado — utilize o WP-CLI (Método 3). É o mais limpo, não deixa código residual e suporta scripting para automação.
  • Tem FTP mas o tema ativo não tem functions.php (temas de blocos, temas FSE) — utilize o Script de Emergência (Método 4) e elimine-o antes de fechar o separador do navegador.
  • Nenhuma das opções acima está disponível — contacte a equipa de suporte do seu fornecedor de alojamento. Eles podem redefinir a palavra-passe da base de dados ao nível da infraestrutura.

FAQ

P: A redefinição da palavra-passe via phpMyAdmin termina as sessões ativas?

Não. Alterar user_pass na base de dados não invalida os cookies de autenticação do WordPress existentes. Para forçar o término de todas as sessões, deve também atualizar as chaves secretas em wp-config.php ou utilizar wp user session destroy --all.

P: A minha tabela wp_users está vazia ou em falta. O que aconteceu?

Isto indica normalmente uma migração de base de dados falhada, uma importação corrompida ou um $table_prefix mal configurado em wp-config.php. Verifique se o prefixo corresponde aos nomes de tabela reais no phpMyAdmin. Se a tabela estiver genuinamente em falta, restaure a partir de uma cópia de segurança da base de dados.

P: Posso utilizar MD5 no phpMyAdmin mesmo que o WordPress agora utilize bcrypt?

Sim. A camada de autenticação do WordPress deteta palavras-passe com hash MD5 no início de sessão e aceita-as por compatibilidade retroativa, re-fazendo imediatamente o hash da palavra-passe utilizando o algoritmo atual (phpass/bcrypt). O hash MD5 é armazenado apenas temporariamente até ao próximo início de sessão bem-sucedido.

P: O comando WP-CLI wp user update devolve um erro de permissões. Como posso corrigir?

Isto significa normalmente que o WP-CLI está a ser executado como um utilizador de sistema diferente do proprietário dos ficheiros do WordPress. Mude para o utilizador correto com sudo -u www-data wp user update ... ou adicione o sinalizador --allow-root se estiver a operar como root.

P: É seguro deixar o script de emergência no servidor durante algumas horas?

Não. O script de emergência não tem qualquer autenticação. Qualquer visitante que descubra ou adivinhe o URL pode utilizá-lo para redefinir a sua palavra-passe de administrador e assumir o controlo total do seu site. Elimine-o imediatamente após a utilização — trate-o com a mesma urgência que uma chave privada exposta.

15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar