Jun 15, 2011
Este artigo vem mostrar como podemos recuperar a conta Admin do WordPress após o site ter sofrido um ataque de hackers e estes apagarem a conta Admin da base de dados do WordPress. Se isto acontecer ficamos imediatamente bloqueados de aceder como administrador ao WordPress o que pode ser um grande problema se não tivermos outra conta de utilizador com permissões de administrador.
Vou aqui mostrar como criar um utilizador admin na base de dados do WordPress via MySQL.
Primeiro entramos no phpMyAdmin e abrimos a base de dados que tem o nosso WordPress.
De seguida temos de fazer algumas alterações nas tabelas wp_users e wp_usermeta.
Comecemos por clicar na tabela wp_users.
Aqui precisamos de inserir a informação do novo utilizador admin. Clicamos na tab “Insere” que abre um formulário para preenchermos. Neste formulário adicionamos o seguinte:
- ID – escolha um número (por exemplo o número 5).
- user_login – insiram o nome de utilizador que irá ser usado no acesso à administração do WordPress. Como exemplo coloquei demo.
- user_pass – a password para este utilizador admin. Certifiquem-se de que escolhem MD5 no menu de funções (vejam na imagem abaixo).
- user_nicename – aqui podem colocar o vosso nome/alcunha que vos identifique.
- user_email – o email associado a esta conta.
- user_url – o endereço do vosso site.
- user_registered – seleccionem a data/hora de registo deste utilizador.
- user_status – coloquem um zero neste opção: 0
- display_name – o nome que querem que fique visível no site (também pode ser o mesmo que colocaram em user_nicename).
E clicamos no botão “Executar” para inserir estes dados na tabela.
De seguida vamos adicionar dados à tabela wp_usermeta. Clicamos na tabela wp_usermeta e depois na tab “Insere” tal como fizemos anteriormente para a tabela wp_users, e adicionamos a seguinte informação no formulário:
- unmeta_id – deixem este campo em branco (será preenchido automaticamente)
- user_id – aqui colocamos o id do utilizador que criámos à pouco, que o número 5.
- meta_key – aqui coloquem: wp_capabilities
- meta_value – coloquem o seguinte: a:1:{s:13:”administrator”;b:1;}
Vamos inserir uma nova linha nesta tabela com a seguinte informação:
- unmeta_id – deixem este campo em branco (será preenchido automaticamente)
- user_id – aqui colocamos o id do utilizador que criámos à pouco, que o número 5.
- meta_key – aqui coloquem: wp_user_level
- meta_value – e aqui: 10
Depois disto clicamos no botão “Executar“, e já temos o nosso utilizador admin criado. Agora já podemos aceder à administração do WordPress com o nome de utilizador e password que acabámos de criar. Após entrarmos na administração do WordPress, clicamos em “Utilizadores” e vamos editar o utilizador que acabámos de criar. Sem alterar quaisquer dados do nosso utilizador clicamos no botão “Guardar“. Esta operação vai adicionar mais algumas informação e repor algumas definições default ao utilizador que criámos.
Efectuar os passos acima recorrendo somente a querys SQL
Para experientes na matéria, podem usar as seguintes querys directamente na base de dados. Basta copiarem as seguintes querys. Este processo é bem mais rápido.
| MySQL | | copiar código | | ? |
| 1 | INSERT INTO `nome_da_base_de_dados`.`wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES ('5', 'demo', MD5('demo'), 'O Meu Nome', 'o_meu@email.com', 'http://www.o_meu_site.com/', '2011-06-15 00:00:00', '', '0', 'O Meu Nome'); |
| 2 | |
| 3 | INSERT INTO `nome_da_base_de_dados`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '5', 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}'); |
| 4 | |
| 5 | INSERT INTO `nome_da_base_de_dados`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '5', 'wp_user_level', '10'); |


Estou com um problemasso aqui no blog de um cliente, tenta me ajudar fera, só achei este post no seu site; foi por um ataque hacker apagaram os usuários do wordpress, estou tentando criar usuários seguindo suas instruções, parece que fiz tudo certo, mas daí efetuar login no wp-admin aparece a mensagem na tela: “Sem permissões suficientes para acessar esta página.” / Daí fui em wp-content/languages e exclui os arquivos “pt_BR.php” e “pt_BR.po” … E mesmo assim continua o erro de permissão. Tenta me ajudar nessa aí gente boa… E você conseguiria mostrar também como funciona a segunda opção de fazer: (Para experientes na matéria, podem usar as seguintes querys directamente na base de dados. Basta copiarem as seguintes querys. Este processo é bem mais rápido.)…
Olá Diony.
Para usar directamente as querys sql tem de ter acesso à sua base de dados com o phpmyadmin.
Depois de entrar no seu phpmyadmin tem de escolher a base de dados na qual vai executar estas querys. Depois escolha a tab “SQL”, cole as querys no quadro que abre e carregue no botão “Executa”.
Não se esqueça de alterar os valores destas querys com os dados de um utilizador novo que tenha a certeza não existir na base de dados.
Mas e quanto ao lance que falei sobre a permissão, existe outra forma de conseguir acessar?! “Sem permissões suficientes para acessar esta página.”
Diony, tente o seguinte:
Utilizando phpMyAdmin:
1 – Aceder ao interface e selecionar a base de dados que se prentende editar;
2 – seleccionar a tabela “user_meta” que deve já estar a utilizar o novo prefixo;
3 – na coluna “meta key” procurar referências ao antigo prefixo “wp_”
4 – o campo mais critico é “wp_capabilities” que deverá ser alterado para reflectir o actual prefixo. Por exemplo “wp_q98k_capabilities”
Guarde esta alteração e tente fazer login novamente.
Após esta alteração já deverá ser possível aceder às páginas de administração, os restantes campos serão então automáticamente gerados pelo wordpress com o novo prefixo. Caso exista mais algum problema é necessário editar manualmente os restantes campos que ainda não tenham o novo prefixo.
Eu fiz a primeira edição que você falou, cliquei em editar na linha e ficou assim agora o meta_key: wp_q98k_capabilities / e meta_value a:1:{s:13:”administrator”;s:1:”1″;} … O erro continuou, sem permissão … Daí não sei se entendi bem, mas tentei mudar os outros nomes abaixo com prefixo wp, e ficaram assim a coluna meta_key do wp_user_meta : wp_q98k_user_level / wp_q98k_user-settings / wp_q98k_user-settings-time / wp_q98k_dashboard_quick_press_last_post_id … O erro continuou, sem permissão … Tenta me ajudar nessa Tiago, é muito importante mesmo para dar continuidade com este cliente … Se for o caso, eu poderia te passar por email os usuários do cpanel, ftp, wp-admin… Obrigado!
Pelo que encontrei este erro é causado pela mudança de prefixo da base de dados após a instalação ou pela migração para outro servidor onde seja alterado o prefixo. Este problema está também associado à utilização do plugin WP security scan.
Quanto a este plugin, eu estava utilizando ele mesmo neste wordpress instalado; daí acessei via ftp e alterei o nome da pasta deste plugin para desabilitá-lo… (Mas não sei quais alterações ele fez no user_meta)… E continua o erro das permissões.
Fala Tiago, acabei restaurando todo o site, criei um novo bd e restaurei pelo phpmyadmin usando o arquivo gerado pelo wp-backup plugin… Daí resolvi o problema de permissão… Só que o hacker que ataca o site, não sei como, ele conseguiu apagar os usuários, e me parece que criou 3 tabelas diferentes, o que acredito que tenha sido o que resultou na falha de permissão ao wp-admin… Agora que restaurei ainda busco soluções para deixar o site mais seguro, protegendo as contas de usuários dp wp-admin … Se conseguir algum plugin muito bom mesmo ou algum novo recurso posta ae… Lembrando que já o site já tinha vários ajustes de segurança, e mesmo assim continuava sendo atacado, tinha instalado antes wordpress-firewall.php / wp-sentinel / secure-wordpress / bulletproof-security / antivirus / admin-ssl-secure-admin … E hoje após este último ataque fiz mais 2 atualizações, instalei o plugin better-wp-security … e migrei o wp-config.php para raiz … , mas não sei se vários plugins resolvem ou acabam criando brechas…. Vlw…
Olá Diony.
Ainda bem que já conseguiu resolver o problema, realmente essa é a forma mais eficaz de resolver.
Por vezes existem graves falhas de segurança no próprio tema que usamos no wordpress. É muito importante termos as versões mais recentes do wordpress, temas e plugins. Basta que um deles tenha uma falha que possa ser explorada, e temos problema.
Pode efectuar um registo neste site que o vai mantendo informado de falhas de segurança, modificação de ficheiros, etc., que vai encontrando no ou nos sites de wordpress que tiver:
http://www.websitedefender.com/
Não é necessário instalar nada no wordpress, basta fazer upload de um ficheiro para o site para que este serviço consiga avaliar e monitorizar os seus sites. Experimente!
Abraço.