Quem administra servidores com cPanel/WHM no dia a dia já se deparou com este pedido: o servidor roda MariaDB moderno para todos os clientes, mas uma aplicação antiga precisa obrigatoriamente do MySQL 5.6 para funcionar sem quebrar consultas legadas.
A primeira dúvida que surge é: dá para ter múltiplos motores de banco de dados rodando nativamente no cPanel ao mesmo tempo?
A resposta curta é não de forma nativa e simultânea pelo painel. No entanto, existem caminhos técnicos para solucionar o cenário sem colocar a estabilidade do servidor em risco.
Abaixo, compartilho o diagnóstico do erro de instalação de pacotes, as limitações da arquitetura do cPanel e as duas formas reais de implementar o MySQL legado.
1. A arquitetura do cPanel e a limitação de banco único#
O cPanel foi desenhado para gerenciar uma única instância ativa de servidor SQL (MariaDB ou MySQL). Os scripts de manutenção e monitoramento do painel (como /scripts/restartsrv_mysql e as rotinas noturnas do upcp) monitoram exclusivamente o socket padrão (/var/lib/mysql/mysql.sock) escutando na porta 3306.
Tentar forçar a instalação de binários do MySQL por cima do MariaDB via gerenciador de pacotes do sistema (yum/dnf) gera conflitos de dependências e quebra a automação do cPanel na primeira atualização automática.
2. A tentativa com MySQL governor e o erro no terminal#
Ao avaliar a instalação do MySQL Governor (utilitário conhecido por gerenciar versões de banco de dados em ambientes cPanel), executei o comando no terminal:
yum install governor-mysql
A saída retornou um erro direto:
Last metadata expiration check: 0:04:41 ago on Fri 27 Mar 2026 11:53:29 AM -03.
No match for argument: governor-mysql
Error: Unable to find a match: governor-mysql
Por que esse erro acontece?#
- Exclusividade do Sistema Operacional: O MySQL Governor pertence aos repositórios do CloudLinux OS. Se o servidor estiver rodando AlmaLinux, Rocky Linux ou CentOS padrão sem a licença e a conversão ativa do CloudLinux, o gerenciador de pacotes não encontrará o utilitário.
- Nomenclatura do Pacote: Em instalações CloudLinux, o pacote oficial responde pelo nome
cl-mysql-governor.
3. As duas soluções práticas#
Opção A: Padronizar o Servidor no MySQL 5.6 com CloudLinux#
Se a máquina roda CloudLinux com licença ativa, o MySQL Governor é o método homologado para alterar a versão do banco mantendo o cPanel integrado.
Importante: O Governor altera a versão do banco para o servidor inteiro. Ele não roda MariaDB 10.x para um site e MySQL 5.6 para outro simultaneamente no mesmo serviço nativo.
Passo a passo:#
- Instalar o pacote do Governor:
yum install cl-mysql-governor
- Definir o target para o MySQL 5.6:
/usr/share/lve/setup/cl-mysql-utils.py --set-version=mysql56
- Executar a conversão do serviço:
/usr/share/lve/setup/cl-mysql-utils.py --install
Cuidados obrigatórios:#
- Backup Completo (Downgrade de Formato): Ao sair de um MariaDB recente para um MySQL 5.6 antigo, os arquivos físicos em
/var/lib/mysqlnão serão lidos diretamente. É obrigatório gerar ummysqldumpcompleto de todas as bases antes da troca e restaurar após a instalação. - EasyApache 4: Pode ser necessário recompilar as extensões PHP (
mysqli,pdo_mysql) para sincronizar a biblioteca cliente do banco.
Opção b: isolamento por aplicação via Docker (abordagem híbrida)#
Se o objetivo é manter o MariaDB moderno intacto na porta 3306 para todos os clientes e entregar o MySQL 5.6 exclusivamente para a aplicação legada, a solução mais limpa e segura é usar um contêiner Docker.
1. Subir a instância do MySQL 5.6 na porta alternativa 3307:#
docker run --name mysql56-legado \
-e MYSQL_ROOT_PASSWORD=sua_senha_segura_aqui \
-p 3307:3306 \
-v /var/lib/docker-mysql56:/var/lib/mysql \
-d mysql:5.6
2. Configurar a aplicação para conectar via TCP/IP:#
No código PHP da aplicação legada (config.php ou conexão PDO), force a conexão via rede informando 127.0.0.1 e a porta 3307, evitando o socket padrão:
<?php
$host = '127.0.0.1'; // IP forca conexao TCP em vez do socket local
$port = '3307';
$db = 'banco_legado';
$user = 'usuario_legado';
$pass = 'senha_segura';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;port=$port;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
Qual abordagem escolher no dia a dia?#
- Se você precisa que todo o servidor rode uma versão legada com suporte oficial do painel, o caminho correto é o CloudLinux com
cl-mysql-governor. - Se você precisa atender apenas uma conta ou sistema legado pontual sem comprometer a segurança e a performance dos outros sites, rodar um contêiner Docker na porta 3307 entrega isolamento total sem risco de conflito com o cPanel.
Este artigo foi útil?
Deixe uma reação rápida para apoiar o conteúdo:
Este post está licenciado sob CC BY-NC.



Comentários
Participe da discussão abaixo.
0 comentários