WordPress com banco de dados externo: como configurar
Veja como separar o banco do WordPress do servidor do site: usuário por host, firewall, as constantes do wp-config.php e os erros de conexão.
Por Redação Eleven Host · @robson.direitodigital · 1 de novembro de 2026 · 10 min de leitura

Capa da Redação Eleven Host para o guia: WordPress com banco de dados externo: como configurar Arte: Eleven Host
Para usar o WordPress com banco de dados externo, você cria o banco e um usuário no servidor de banco e troca DB_HOST, DB_NAME, DB_USER e DB_PASSWORD no wp-config.php. Depois disso, o site passa a gravar e ler os dados em outra máquina.
Quando faz sentido separar o banco do site
Por padrão, o WordPress conversa com o banco pelo nome localhost, e o banco roda no mesmo servidor do site. A documentação oficial do wp-config.php diz sobre o DB_HOST que "there is a good chance you will NOT have to change it", em tradução livre, há boa chance de você não precisar mudar esse valor. Trocar só é necessário quando o seu banco está em outro lugar.
Alguns cenários em que a separação entra na conversa:
- O banco já existe em outro servidor e você quer apontar o site para ele.
- Você contratou um serviço de banco de dados à parte e só precisa apontar o site para ele.
- Você quer separar as funções: um servidor para o PHP e o site, outro para os dados.
Separar também traz trabalho: o banco passa a receber conexões pela rede, e isso exige cuidado com firewall e com as permissões do usuário, como você vê nas próximas seções. Por isso, teste o seu site depois da troca para ver como ele se comporta.
Banco de dados externo é uma troca de endereço: o WordPress continua igual, e só o lugar onde ele busca os dados muda.
Requisitos do WordPress para o banco
Antes de preparar o servidor de banco, confira o que a página oficial de requisitos do WordPress (modificada em 07/05/2026) pede: PHP 8.3 ou superior, MariaDB 10.11 ou superior ou MySQL 8.0 ou superior, e suporte a HTTPS. O banco externo precisa estar numa dessas versões.
Se o site vai para uma máquina nova junto com o banco, o guia VPS para WordPress: quando vale a pena e como escolher ajuda a decidir o servidor do lado do site.
O que preparar no servidor de banco
No servidor de banco, você precisa de três coisas: um banco para o site, um usuário e a permissão desse usuário sobre esse banco. O ponto de atenção é o host do usuário. No MySQL, o nome da conta tem a forma 'nome_do_usuario'@'nome_do_host', e a documentação mostra que o host define de onde a conta pode se conectar. Um usuário criado para 'localhost' só serve para quem conecta da própria máquina do banco. Já um usuário sem host é equivalente a @'%', que aceita conexão de outros hosts.
Por isso, crie o usuário amarrado ao endereço do servidor web. Os exemplos abaixo usam o IP de documentação 203.0.113.10 como o servidor do site e trocam os nomes pelos seus:
CREATE DATABASE nome_do_banco;
CREATE USER 'wp_site'@'203.0.113.10' IDENTIFIED BY 'troque_por_uma_senha_forte';
GRANT ALL PRIVILEGES ON nome_do_banco.* TO 'wp_site'@'203.0.113.10';
O exemplo acima usa ALL PRIVILEGES, mas só sobre o banco do site, e não em todos os bancos do servidor.
O mesmo padrão aparece na documentação do MySQL, com o exemplo 'custom'@'host47.example.com', e a frase que o acompanha é esta: a conta só pode ser usada para conectar a partir daquele host. Dê a permissão apenas sobre o banco do site (nome_do_banco.*). Os exemplos da documentação com *.* e WITH GRANT OPTION são de conta de administrador, e o usuário do WordPress não precisa disso. O artigo Criar usuário MySQL: como dar permissões com GRANT explica cada parte desse comando.
A documentação do MySQL também marca os curingas % e _ no host como obsoletos. Prefira o IP exato do servidor web.
Liberar a porta 3306 só para o servidor do site
Na versão 8.4 do MySQL, o valor padrão de bind_address é *. A documentação explica que, com esse valor, o servidor aceita conexões TCP/IP em todas as interfaces IPv4 do servidor e, se houver suporte, também nas IPv6. Um valor como 127.0.0.1 restringe a escuta a esse endereço, e por isso um banco que escuta só nele não recebe conexões de outra máquina.
Na prática, para um banco externo, o servidor de banco precisa escutar na rede, e o firewall passa a ser a barreira. Deixe a porta 3306 liberada apenas para o IP do servidor web e feche para o resto da internet. Uma porta de banco aberta para a internet toda amplia o risco, e o usuário com host específico é uma segunda camada de proteção, que não substitui a primeira.
Onde ficará o banco de dados
Com a rede e as permissões prontas, falta decidir onde o banco vai ficar.
Precisa de um banco de dados na nuvem? 11SQL Mini a partir de R$ 9,90/mês; confira na loja o que cada plano inclui. Ver o 11SQL
Editar o wp-config.php
O arquivo wp-config.php fica na pasta do WordPress. O bloco padrão do arquivo de exemplo da documentação tem estas quatro constantes:
define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );
Troque os valores pelos do banco que você criou. O DB_HOST recebe o nome ou o endereço do servidor de banco. A documentação mostra exemplos com nome de host e porta, como este:
define( 'DB_HOST', 'mysql.example.com:3307' );
A porta só entra no valor quando ela é diferente da padrão. Segundo a documentação, se a sua hospedagem usa uma porta alternativa para o banco, é preciso mudar o DB_HOST para incluí-la. Para a porta 3306, o nome do servidor já resolve. Outro caso que a documentação cita é o de socket Unix, usado quando banco e site estão na mesma máquina, como em localhost:/var/run/mysqld/mysqld.sock. Num banco externo você usa o endereço de rede.
Se o seu servidor de banco tem um nome como banco.exemplo.com, o resultado fica assim:
define( 'DB_HOST', 'banco.exemplo.com' );
Duas observações sobre o arquivo. A primeira: o DB_PASSWORD fica em texto no wp-config.php, então proteja o arquivo e não o publique em repositório. A segunda: a documentação avisa que adicionar DB_CHARSET e DB_COLLATE ao arquivo de um blog que já existe "can cause major problems", isto é, pode causar problemas sérios. O valor da documentação para DB_CHARSET é utf8, e o DB_COLLATE fica vazio na maior parte dos casos. Num site existente, deixe essas duas constantes como estão.
Conexão segura entre o site e o banco
Com o banco fora do servidor, os dados passam pela rede. O MySQL permite exigir conexão criptografada: a documentação diz que, para exigir que os clientes se conectem de forma criptografada, você ativa a variável require_secure_transport, com require_secure_transport=ON na seção [mysqld]. Uma conta criada com a cláusula REQUIRE SSL falha na conexão se não for possível estabelecer uma conexão criptografada.
Do lado do WordPress, a documentação do wp-config.php não trata de SSL. O código do próprio WordPress lê uma constante chamada MYSQL_CLIENT_FLAGS e a repassa à função de conexão do PHP. O manual do PHP descreve a opção MYSQLI_CLIENT_SSL como "use SSL (encryption)". Você pode ver a configuração assim:
define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );
Cuidado com a opção vizinha, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT. Segundo o PHP, ela desativa a validação do certificado do servidor. A conexão fica criptografada, mas sem conferir quem está do outro lado, e por isso não deve ser tratada como conexão segura completa.
O servidor de banco também precisa estar preparado: o MySQL só ativa o TLS sozinho se encontrar os arquivos ca.pem, server-cert.pem e server-key.pem no diretório de dados. E o cliente do MySQL, no modo padrão (--ssl-mode=PREFERRED), volta para conexão sem criptografia se a criptografada falhar. Teste a conexão e confirme se ela está mesmo criptografada.
Migrar o banco de um site que já existe
Se o WordPress já está no ar com o banco local, a troca tem uma ordem que evita perda de dados. O desenho geral é este:
- Faça uma cópia (exportação) do banco atual e guarde o arquivo em local seguro.
- Crie o banco e o usuário no servidor de banco, como na seção anterior.
- Importe a cópia no banco novo.
- Confira se as tabelas e as linhas chegaram. O prefixo das tabelas fica na variável
$table_prefixdowp-config.php, e o prefixo no banco novo precisa ser o mesmo que o arquivo informa. Segundo a documentação, também é possível ter várias instalações num banco só, desde que cada uma tenha um prefixo único. - Só então edite o
wp-config.phpe aponte o DB_HOST para o servidor novo.
Os comandos de exportação e importação dependem de como o seu banco é administrado, e o guia de usuários e permissões no MySQL, citado acima, cobre a parte de acesso que você vai precisar para importar. Mantenha o banco antigo intacto até o site rodar bem com o novo: se algo falhar, devolva o DB_HOST antigo ao arquivo para voltar ao estado anterior.
Erros comuns depois da troca
Um erro que pode aparecer é a tela "Error establishing a database connection". O próprio texto do WordPress dá duas explicações: o usuário e a senha do wp-config.php estão incorretos, ou não foi possível estabelecer contato com o servidor de banco no endereço informado. Outras causas que você encontrar em fóruns são hipóteses, e vale testar na ordem abaixo:
- Credenciais. Confira DB_NAME, DB_USER e DB_PASSWORD, letra por letra. Se o MySQL responder com acesso negado, veja o guia Erro 1045 MySQL: Access denied for user.
- Host do usuário. O usuário foi criado para o IP do servidor web? Um usuário amarrado a outro host é recusado.
- Alcance de rede. O servidor de banco está acessível pela porta e o firewall libera o IP do site? O artigo Erro 2003 MySQL: Can't connect to server mostra como investigar.
- Porta. Se o banco usa uma porta diferente da padrão, ela precisa estar no DB_HOST, depois de dois-pontos.
Checklist da troca para banco externo
- Servidor de banco com MariaDB 10.11 ou superior, ou MySQL 8.0 ou superior.
- Banco criado e usuário com host igual ao IP do servidor web.
- Permissão (GRANT) só sobre o banco do site, e não sobre
*.*. - Porta 3306 liberada no firewall só para o IP do servidor web.
- Senha forte no usuário, e o
wp-config.phpprotegido. - DB_HOST com a porta, se ela for diferente da padrão.
- DB_CHARSET e DB_COLLATE intactos em site existente.
- Cópia do banco antigo guardada antes da troca.
- Site aberto no navegador e área administrativa testada depois da troca.
Quer montar o servidor do site com mais controle? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Ver os planos de VPS
Perguntas frequentes
Como configurar o WordPress com banco de dados externo?
Crie o banco e um usuário no servidor de banco, libere a conexão para o IP do servidor web e troque DB_NAME, DB_USER, DB_PASSWORD e DB_HOST no wp-config.php.
O que vai no DB_HOST de um banco externo?
O nome ou o endereço do servidor de banco, com a porta depois de dois-pontos quando ela for diferente da padrão, como em mysql.example.com:3307.
Posso usar o usuário com host %?
Funciona, mas aceita conexão de outros hosts. A documentação do MySQL mostra a conta presa a um host específico, e o IP exato do servidor web é a escolha mais segura.
Aparece "Error establishing a database connection". O que fazer?
O WordPress aponta duas causas: usuário e senha incorretos no wp-config.php, ou servidor de banco inacessível no endereço informado. Confira as credenciais e depois o firewall e a porta.
Preciso mudar DB_CHARSET ao trocar de banco?
Não. A documentação avisa que mexer em DB_CHARSET e DB_COLLATE num site existente pode causar problemas sérios.