Aprenda como alterar o prefixo da tabela de banco de dados do WP

Aprender como alterar o prefixo da tabela de banco de dados do WP ajuda melhorar a segurança e evitar ataques de SQL Injection.

Seus amigos merecem saber desse conteúdo?

Uma das formas de proteger o banco de dados do WordPress é não fazer uso do prefixo “wp_”. Se esse prefixo estiver em uso em sua instalação de software, considere alterar o prefixo da tabela de banco de dados do WP para melhorar a segurança, proteger a estrutura e evitar ataques de SQL Injection, por exemplo.

O WordPress não é vulnerável a ataques de SQL Injection. Mas isso pode acontecer, e neste caso uma atualização seria disponibilizada para corrigir o problema. Por isso você deve sempre fazer o uso da última versão de software. Muitos plugins não são desenvolvidos com a devida atenção a aspectos de segurança e isso pode criar brechas, por exemplo, de SQL Injection. Plugins populares como o WooCommerce e Yoast SEO passaram por isso recentemente, mas atualizações foram disponibilizadas e o problema corrigido.

Imagine que um hacker encontre brechas em seu site, ele vai explorar as brechas através de campos de formulário para digitar comandos SQL ao contrário da informação que você espera, como um endereço de e-mail, por exemplo. E como a estrutura do banco de dados é conhecida, a não utilização do prefixo “wp_” garante maior segurança e dificulta o trabalho do atacante.

Backup para começar os trabalhos

Alterar o prefixo da tabela de banco de dados do WordPress requer alterações na estrutura da base de dados da aplicação. Antes de começar os trabalhos nesse sentido é preciso considerar um backup para ter uma fonte segura a quem recorrer.

Sobre a estrutura do banco de dados do WordPress

O esquema de banco de dados do WordPress
O esquema de banco de dados do WordPress

O WordPress por padrão requer a criação de 11 tabelas na base de dados e todas elas fazem uso do mesmo prefixo. Seus nomes são auto-descritivos para suas finalidades, observe:

  • *_commentmeta
  • *_comments
  • *_links
  • *_options
  • *_postmeta
  • *_posts
  • *_terms
  • *_term_relationships
  • *_term_taxonomy
  • *_usermeta
  • *_users

Durante o processo de instalação do WordPress você define o prefixo a ser utilizado, com isso é possível iniciar sem o uso do “wp_”. Caso o começo tenha sido errôneo precisaremos atuar para alterar o prefixo da tabela de banco de dados do WP alterando “wp_”, por exemplo, para “wp_UmEXmplloHAshEE_”.

O arquivo wp-config.php e o prefixo da tabela de banco de dados do WP

Prefixo da tabela de banco de dados do WP no arquivo wp-config.php

No arquivo wp-config.php a variável $table_prefix armazena o prefixo da tabela de banco de dados do WP e, em caso de alteração, é preciso alterar o valor dessa variável com o novo nome do prefixo que fora definido.

Com a alteração do prefixo da tabela de banco de dados do WP no arquivo mencionado o WordPress não encontrará suas tabelas no banco e vai compreender que ele não está instalado e te conduzirá para o processo de configuração. Isso é um comportamento normal e a partir daí precisaremos seguir para alterar o prefixo na estrutura das tabelas.

Como alterar o prefixo da tabela do banco de dados do WordPress

Alterar o prefixo da tabela do banco de dados pode ser feito manualmente através de comandos SQL ou com o uso de interface como o phpMyAdmin. Veremos ambos os cenários para esse processo.

Alterar o prefixo da tabela do banco de dados do WP através de instruções SQL

O primeiro passo é renomear todas as tabelas alterando seu prefixo, assim:

RENAME table `wp_commentmeta` TO `wp_UmEXmplloHAshEE_commentmeta`;
RENAME table `wp_comments` TO `wp_UmEXmplloHAshEE_comments`;
RENAME table `wp_links` TO `wp_UmEXmplloHAshEE_links`;
RENAME table `wp_options` TO `wp_UmEXmplloHAshEE_options`;
RENAME table `wp_postmeta` TO `wp_UmEXmplloHAshEE_postmeta`;
RENAME table `wp_posts` TO `wp_UmEXmplloHAshEE_posts`;
RENAME table `wp_terms` TO `wp_UmEXmplloHAshEE_terms`;
RENAME table `wp_term_relationships` TO `wp_UmEXmplloHAshEE_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wp_UmEXmplloHAshEE_term_taxonomy`;
RENAME table `wp_usermeta` TO `wp_UmEXmplloHAshEE_usermeta`;
RENAME table `wp_users` TO `wp_UmEXmplloHAshEE_users`;

Em seguida é preciso ter uma atenção especial a duas tabelas em específico, a *_options e *_usermeta. Nessas tabelas há campos em que seus nomes são constitutídos com o prefixo da tabela em uso, é preciso localizar essas informações e alterar o prefixo da tabela de banco de dados do WP também. As instruções SQL para localizar esses campos são as seguintes:

SELECT * FROM `wp_UmEXmplloHAshEE_options` WHERE `option_name` LIKE '%wp_%'
SELECT * FROM `wp_UmEXmplloHAshEE_usermeta` WHERE `meta_key` LIKE '%wp_%'

Alterar o prefixo da tabela do banco de dados do WP através do phpMyAdmin

Função nativa do phpMyAdmin para alterar o prefixo da tabela de banco de dados do WPDependendo da sua versão do phpMyAdmin a troca de prefixo de tabela é facilitado devido a um recurso nativo. Observe uma representação dessa funcionalidade na imagem ao lado.

A forma de uso do recurso mencionado é muito simples. Selecione todas as tabelas com o prefixo “wp_” e escolha a opção “Replace table prefix” nas opções do “With selected:“.

Essa opção te apresentará uma tela com dois campos de formulários para você informar o “From” e o “To”. Com isso abastará informar, nesse contexto, “wp_” em “From” e “wp_UmEXmplloHAshEE_” em “To”.

Em seguida, como já é de conhecimento, é preciso localizar os campos em que seus nomes foram constituídos com o prefixo. Esses campos se localizam nas tabelas *_options e *_usermeta. As imagens abaixo representam essa busca e alteração do prefixo através do phpMyAdmin.

Prefixo antigo localizado na tabela de meta informações do usuário
Prefixo antigo localizado na tabela de meta informações do usuário
Interface de edição de linha daetabela no phpMy admin
Interface de edição de linha daetabela no phpMy
admin

O prefixo da tabela de banco de dados do WP como aspecto de segurança

Em um olhar simplificado alterar o uso do prefixo da tabela de banco de dados do WP para garantir o não uso do “wp_” parece ser pouco, mas é um passo a mais em direção a segurança para WordPress., fugir do padrão da estrutura do banco de dados e garantir mais segurança para ele, dificultar os ataques de SQL Injection e proteger um dos principais ativos do seu site: suas informações, as quais ficam armazenadas em banco de dados.

Opa! Não conseguimos encontrar o seu formulário.