Wordpress

wp user update: resetar a senha do admin do WordPress pelo terminal

Você clicou em perdeu a senha, o WordPress disse que enviou o link e o e-mail nunca chega, porque o servidor manda mail pela função nativa do PHP e o provedor descarta. Se você tem SSH na máquina, dá pra trocar a senha do administrador em dois comandos e voltar pro painel agora.

Descubra o ID certo antes de trocar

Em site antigo quase sempre existe mais de um administrador, e o ID 1 pode ser um usuário de migração que ninguém usa. Liste primeiro:

cd /var/www/seusite/html

sudo -u www-data wp user list --role=administrator --fields=ID,user_login,user_email

sudo -u www-data wp user update 7 --user_pass='TrocaEssaSenhaDepois2026' --skip-email

Esse caminho é mais seguro que um UPDATE na tabela wp_users porque o WP-CLI passa pelas funções internas do WordPress: o hash sai do próprio core, que desde a 6.8 usa bcrypt, e a chave de ativação pendente daquele pedido de recuperação é zerada de quebra. Senha em texto puro gravada na mão no banco simplesmente não loga.

Não deixe a senha no histórico do shell

Do jeito acima a senha fica salva no arquivo de histórico do seu usuário. Gerar numa variável tira ela do histórico, mas o valor já expandido continua visível pra quem der um ps no segundo em que o comando roda:

NOVA=$(openssl rand -base64 18)
sudo -u www-data wp user update 7 --user_pass="$NOVA" --skip-email
echo "senha: $NOVA"

Em máquina compartilhada eu nem passo a senha na linha de comando: sudo -u www-data wp user update 7 --skip-email --prompt=user_pass faz o WP-CLI pedir o valor no terminal, e aí ele não entra no histórico nem na lista de processos.

Logou de volta? Entre em Usuários, apague os administradores que ninguém reconhece e confirme o e-mail cadastrado no seu. Conta de admin esquecida com senha fraca é a porta de entrada mais comum que eu encontro em faxina de site invadido.

Post Recentes

Google Consent Mode v2 no WordPress: default denied antes do gtag rodar

O Google Ads acusa consentimento ausente porque o gtag sobe antes do banner. Veja como injetar o default denied do…

4 horas atrás

Módulos PHP 8.3 faltando na Saúde do site do WordPress: como instalar

A tela Saúde do site avisa que faltam extensões como intl, imagick ou zip: instale no PHP 8.3, reinicie o…

6 horas atrás

Caso de teste PHPUnit a partir do bug: do relato solto para o teste que falha

Chegou um chamado sem passo a passo e sem exemplo. Veja como virar esse relato em um caso de teste…

1 dia atrás

Bloquear .env e .git no nginx: as regras que ainda deixam o arquivo vazar

Negar /.env no nginx parece resolvido até alguém pedir /wp-content/uploads/.env ou backup.sql. As regras que testei e os furos que…

3 dias atrás

Canonical errado no Yoast: corrigindo pelo filtro wpseo_canonical

O Search Console marca suas páginas 2, 3 e 4 como alternativas da página 1? Ajuste a tag canônica do…

3 dias atrás

Layout XML do Magento 2: remover bloco de módulo de terceiro

Um módulo de terceiro plantou um banner no topo da loja e você não quer desinstalar nada: tire o bloco…

3 dias atrás