Como corrigir a alteração de prefixo do banco que falha no All in One Security
O que é erro ao mudar prefixo do banco no AIOS?
A funcionalidade Database Security do All in One Security (AIOS) troca o prefixo padrão das tabelas (o famoso wp_) por um valor aleatório, para dificultar ataques automatizados que assumem nomes de tabela previsíveis. Ao executar, o plugin renomeia cada tabela do banco e reescreve a linha do prefixo dentro do wp-config.php.
O erro Não Altera aparece quando uma dessas duas operações é bloqueada: ou o PHP não consegue gravar no wp-config.php, ou o usuário do MySQL configurado no site não tem permissão para renomear tabelas. Nesses casos o AIOS exibe a mensagem de falha e mantém o prefixo antigo, sem deixar o banco em estado inconsistente.
Como identificar
- Mensagem na tela do plugin: ‘Unable to write to the wp-config.php file. Please ensure it is writable.’ em WP Security -> Database Security após clicar em alterar o prefixo
- Mensagem ‘Error: The DB prefix could not be changed.’ ou ‘The table rename failed’ exibida no topo da aba Database Security
- O campo de prefixo continua mostrando o valor antigo (por exemplo wp_) mesmo depois de salvar e recarregar a página
- Aviso no log de erros do PHP do tipo ‘Access denied’ ou ‘command denied to user’ apontando para um comando ALTER ou RENAME TABLE
- Em multisite, a aba Database Security informa que o recurso não está disponível ou aparece marcado como ativo em subsites mesmo sem ter sido aplicado
Como prevenir
- Defina o prefixo personalizado na instalação do WordPress, antes de popular o banco, evitando renomear tabelas em produção.
- Confirme com a hospedagem que o usuário do MySQL do site já possui o privilégio ALTER antes de usar a ferramenta.
- Mantenha o wp-config.php em 0444 no dia a dia e libere a escrita apenas durante a operação, voltando ao somente leitura logo depois.
- Em ambientes multisite, não dependa do AIOS para o prefixo: trate o prefixo base na criação da rede, pois a ferramenta é desativada nesse cenário.
Causa
- O arquivo wp-config.php está somente leitura para o usuário do PHP: a permissão está em 0444 ou o dono do arquivo é diferente do usuário que roda o PHP-FPM, então o AIOS não consegue reescrever a linha do prefixo.
- O usuário do MySQL definido em DB_USER no wp-config.php não tem o privilégio ALTER (necessário para o comando RENAME TABLE), comum em hospedagens que concedem apenas SELECT, INSERT, UPDATE e DELETE.
- O novo prefixo informado é inválido: contém caracteres fora de letras, números e underline, ou não termina com underline, fazendo o AIOS recusar a operação antes de tocar no banco.
- O site é uma instalação multisite (rede), cenário em que o AIOS desativa a alteração de prefixo porque o WordPress multisite depende do prefixo base para montar os nomes de tabela de cada subsite.
- Um plugin de cache de objeto (Redis ou Memcached) ou de segurança concorrente mantém conexões antigas com os nomes de tabela anteriores, e o teste de gravação do AIOS aborta para não corromper o acesso ao banco.
Como resolver
- Faça backup completo do banco e do wp-config.php antes de tocar no prefixo: Renomear tabelas é uma operação irreversível sem backup. Exporte o banco e baixe uma cópia do arquivo de configuração por FTP ou pelo gerenciador de arquivos da hospedagem antes de qualquer alteração.
wp db export backup-antes-prefixo.sql cp wp-config.php wp-config.php.bak - Deixe o wp-config.php gravável para o usuário do PHP: O AIOS precisa reescrever a linha do prefixo dentro do arquivo. Ajuste a permissão para permitir escrita pelo dono e confirme que o dono do arquivo é o mesmo usuário do PHP-FPM. Após o plugin concluir, volte a permissão para somente leitura.
chmod 0644 wp-config.php ls -l wp-config.php chmod 0444 wp-config.php - Conceda o privilégio ALTER ao usuário do banco: Sem ALTER o MySQL recusa o RENAME TABLE que o AIOS dispara. Conecte no banco com um usuário administrativo, conceda o privilégio ao usuário do site e recarregue as permissões. Troque o nome do usuário, do banco e do host pelos valores reais do seu wp-config.php.
GRANT ALTER ON nome_do_banco.* TO 'usuário_wp'@'localhost'; FLUSH PRIVILEGES; - Informe um prefixo válido e execute pela tela do plugin: Acesse WP Security -> Database Security, marque a opção para gerar um novo prefixo ou digite um valor próprio. O prefixo deve conter apenas letras, números e underline e terminar com underline. Salve e aguarde a confirmação de sucesso.
Prefixo válido de exemplo: a7x9_ Caminho do menu: WP Security -> Database Security - Verifique o prefixo no wp-config.php e teste o acesso: Depois da troca, confirme que a linha do prefixo no arquivo reflete o novo valor e que o painel e o site abrem normalmente. Se algo falhar, restaure o backup do passo 1 e investigue o privilégio ou a permissão antes de tentar de novo.
grep table_prefix wp-config.php wp option get siteurl
-- Verificar os privilégios atuais do usuário do site
SHOW GRANTS FOR 'usuario_wp'@'localhost';
-- Conceder ALTER (necessário para RENAME TABLE que o AIOS executa)
GRANT ALTER ON nome_do_banco.* TO 'usuario_wp'@'localhost';
FLUSH PRIVILEGES;














