Tutorial como mudar o prefixo das tabelas do wordpress

Objetivo

Alterar o prefixo das tabelas do wordpress em um banco de dados já existente.

Requisitos

Ter um banco de dados funcional do wordpress onde deseja alterar o prefixo das tabelas no banco de dados.

Resumo

Os passos para alterar o prefixo de um banco de dados do wordpress já existente são:

  1. Atualizar o arquivo wp-config.php e alterar a linha com o novo prefixo desejado: $table_prefix = ‘wp_‘;
  2. Caso tenha o phpmyadmin instalado, selecione as tabelas e clique na opção: “Replace table prefix” ou “Substituir o prefixo de tabelas“.
  3. Agora é necessário atualizar as referências cruzadas das tabelas do banco, alterar o prefixo anterior (wp_) para o novo (wpNOVO_). Execute as query SQL (podem ser feitas dentro do phpmyadmin também):
    • update wpNOVO_usermeta set meta_key = ‘wpNOVO_capabilities’ where meta_key = ‘wp_capabilities’;
    • update wpNOVO_usermeta set meta_key = ‘wpNOVO_user_level’ where meta_key = ‘wp_user_level’;
    • update wpNOVO_usermeta set meta_key = ‘wpNOVO_autosave_draft_ids’ where meta_key = ‘wp_autosave_draft_ids’;
    • update wpNOVO_options set option_name = ‘wpNOVO_user_roles’ where option_name = ‘wp_user_roles’;

Abaixo teremos um passo a passo descritivo de cada etapa.

Passo a passo de como alterar o prefixo do banco de dados do WordPress

Passo 1 – Inserir o novo prefixo no arquivo wp-config.php

Caso esteja no windows, basta abrir o arquivo wp-config.php no bloco de notas e alterar a linha:

$table_prefix = 'wp_';

Caso esteja realizando a atualização em linha de comando no linux ou mac os, caminhe até o diretório raiz da sua instalação do wordpress e edite o arquivo wp-config.php:

nano wp-config.php

Agora com o editor nano aberto, ande até encontrar a linha:

$table_prefix = 'wp_';

Esta linha indica que todas as tabelas do wordpress começam com o prefixo wp_.

Caso queira um prefixo novo chamado wpNOVO_, basta alterar essa linha para:

$table_prefix = 'wpNOVO_';

Passo 2 – Alterar o prefixo existente no banco de dados

O próximo passo é alterar manualmente o prefixo existente nas tabelas do banco de dados.

Opção 1: Alterar prefixos utilizando phpmyadmin

Caso tenha o phpmyadmin instalado, basta clicar no banco de dados para que as tabelas apareçam ao lado direito.

Agora clique em:

Marcar todos

Ao lado de Marcar todos, clique em:

Com marcados:

E finalmente selecione:

Substituir o prefixo de tabelas

Wordpress - alterar o prefixo de tabelas - selecionar tabelas pelo phpmyadmin

Um modal irá abrir para você selecionar o prefixo antigo atual e o novo prefixo que deseja alterar. Do nosso exemplo o prefixo atual é o original:

wp_

O novo prefixo desejado vai ser:

wpNOVO_

Agora basta clicar em:

Continuar

Wordpress - alterar o prefixo de tabelas - definir prefixo antigo e novo

Opção 2 – Alterar prefixos utilizando query SQL

Caso não tenha o phpmyadmin instalado, basta executar uma query SQL do tipo ALTER TABLE para cada tabela do banco de dados no wordpress. É muito comum que plugins criem tabelas adicionais no banco de dados do wordpress, mas para referência, as tabelas padrão de uma instalação do wordpress e suas respectivas alterações necessárias são:

ALTER TABLE `wp_commentmeta` RENAME `wpNOVO_commentmeta`;
ALTER TABLE `wp_comments` RENAME `wpNOVO_comments`;
ALTER TABLE `wp_links` RENAME `wpNOVO_links`;
ALTER TABLE `wp_options` RENAME `wpNOVO_options`;
ALTER TABLE `wp_postmeta` RENAME `wpNOVO_postmeta`;
ALTER TABLE `wp_posts` RENAME `wpNOVO_posts`;
ALTER TABLE `wp_termmeta` RENAME `wpNOVO_termmeta`;
ALTER TABLE `wp_terms` RENAME `wpNOVO_terms`;
ALTER TABLE `wp_term_relationships` RENAME `wpNOVO_term_relationships`;
ALTER TABLE `wp_term_taxonomy` RENAME `wpNOVO_term_taxonomy`;
ALTER TABLE `wp_usermeta` RENAME `wpNOVO_usermeta`;
ALTER TABLE `wp_users` RENAME `wpNOVO_users`;

Wordpress - alterar o prefixo de tabelas - utilizar query sql para mudar prefixo

A figura acima ilustra uma query SQL executada que tem o mesmo resultado do Passo 2 e Opcão 1 apresentado. Ela pode ser realizada também pelo console do mysql.

Passo 3 – Alterar referências entre tabelas existentes

Por fim, existem também referências entre as tabelas que precisam ser atualizadas. Geralmente apenas as tabelas user_meta e options possuem estas referências. Caso utilize plugins específicos com tais referências ou alguma versão mais nova do wordpress é bom ficar atento.

Caso utilize o phpmyadmin, e caso tenha clicado no banco de dados no menu da esquerda, as seguintes opções irão aparecer no menu superior:

Estrutura | SQL | Procurar | Consulta | Exportar | Importar | Operações | Rotinas | Eventos | Acionadores | Designer

Clique na opção do menu superior chamada:

SQL

Agora insira o seguinte código dentro do campo:

update wpNOVO_usermeta set meta_key = 'wpNOVO_capabilities' where meta_key = 'wp_capabilities';
update wpNOVO_usermeta set meta_key = 'wpNOVO_user_level' where meta_key = 'wp_user_level';
update wpNOVO_usermeta set meta_key = 'wpNOVO_autosave_draft_ids' where meta_key = 'wp_autosave_draft_ids';
update wpNOVO_options set option_name = 'wpNOVO_user_roles' where option_name = 'wp_user_roles';

Agora clique em:

Executar

A query SQL que inseriu irá ser executada e irá buscar as referências do prefixo antigo nas tabelas e realizar a atualização.

Caso não tenha o phpmyadmin, basta executar a query acima no console do mysql que terá o mesmo resultado.

Wordpress - alterar o prefixo de tabelas - alterar referências entre tabelas com o novo prefixo

Conclusão

A mudança do prefixo, das tabelas do wordpress, pode ser necessária em diversas ocasiões: aumentar segurança da instalação, ter várias instâncias do wordpress no mesmo banco, adequar a uma necessidade da organização, etc. O processo é simples e realizado em 3 etapas: atualizar o novo prefixo no wp-config.php, mudar o prefixo no banco e atualizar as referências entre tabelas.