MySQL phpMyAdmin · 5 min read · Jan 29, 2026
Gerenciando Vários Servidores MySQL a Partir de Uma Instalação do phpMyAdmin (Usando Criptografia SSL) - Página 2
3 Configurando o phpMyAdmin
local.example.com:
Antes de prosseguirmos com a configuração do phpMyAdmin, vamos primeiro verificar se realmente conseguimos conectar de local.example.com ao servidor MySQL em remote.example.com (através de uma conexão SSL):
mysql --ssl-ca=/etc/mysql/newcerts/ca-cert.pem --ssl-cert=/etc/mysql/newcerts/client-cert.pem --ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -pVocê será solicitado a inserir a senha, e se tudo correr bem, você terá acesso:
root@local:/etc/mysql/newcerts# mysql –ssl-ca=/etc/mysql/newcerts/ca-cert.pem –ssl-cert=/etc/mysql/newcerts/client-cert.pem –ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -p
Digite a senha:
Bem-vindo ao monitor MySQL. Os comandos terminam com ; ou \g.
Seu ID de conexão MySQL é 101
Versão do servidor: 5.5.24-8-log (Debian)
Copyright (c) 2000, 2011, Oracle e/ou suas afiliadas. Todos os direitos reservados.Oracle é uma marca registrada da Oracle Corporation e/ou suas
afiliadas. Outros nomes podem ser marcas registradas de seus respectivos
proprietários.
Digite 'help;' ou '\h' para ajuda. Digite '\c' para limpar a instrução de entrada atual.mysql>Digite
quit;para sair do shell MySQL.
Agora chegamos à parte onde configuramos o phpMyAdmin - presumo que você já consiga usar o phpMyAdmin para se conectar ao servidor MySQL local, e agora queremos configurá-lo para que possamos nos conectar ao remote.example.com também usando SSL (na tela de login do phpMyAdmin, haverá um menu suspenso do qual você pode selecionar o servidor ao qual deseja se conectar).
Antes que o phpMyAdmin possa usar SSL para se comunicar com o servidor MySQL remoto, precisamos modificar suas fontes um pouco - abra mysqli.dbi.lib.php (no Debian e Ubuntu, é /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php se você instalou o phpMyAdmin através do apt):
vi /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.phpEncontre a seguinte seção…
| | [...] /* Opcionalmente habilitar SSL */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |
… e modifique-a da seguinte forma:
| | [...] /* Opcionalmente habilitar SSL */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { mysqli_ssl_set($link, $GLOBALS['cfg']['Server']['key'], $GLOBALS['cfg']['Server']['cert'], $GLOBALS['cfg']['Server']['ca'], $GLOBALS['cfg']['Server']['capath'], $GLOBALS['cfg']['Server']['cipher']); $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |
Em seguida, abra config.inc.php - se você estiver no Debian/Ubuntu e tiver instalado o phpMyAdmin através do apt, é /etc/phpmyadmin/config.inc.php:
vi /etc/phpmyadmin/config.inc.php Encontre a seguinte seção:
| | [...] /* Configure de acordo com dbconfig-common se habilitado */ if (!empty($dbname)) { /* Tipo de autenticação */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parâmetros do servidor */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Selecione mysqli se seu servidor tiver */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Opcional: Usuário para recursos avançados */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Opcional: Recursos avançados do phpMyAdmin */ $cfg['Servers'][$i]['pmadb'] = $dbname; $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; $cfg['Servers'][$i]['relation'] = 'pma_relation'; $cfg['Servers'][$i]['table_info'] = 'pma_table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; $cfg['Servers'][$i]['history'] = 'pma_history'; $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Descomente o seguinte para habilitar login em contas sem senha, * após tomar nota dos riscos de segurança associados. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Avance para o próximo servidor para o restante da configuração */ $i++; } [...] | |
Adicione a seguinte seção abaixo dela para localhost (= local.example.com):
| | [...] /* localhost.example.com */ /* Tipo de autenticação */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parâmetros do servidor */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Selecione mysqli se seu servidor tiver */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |
(No linha $cfg[‘Servers’][$i][‘hide_db’] você pode especificar todos os bancos de dados que não deseja que apareçam no phpMyAdmin - como information_schema, performance_schema e test.)
E para remote.example.com, adicione a seguinte seção:
| | [...] /* remote.example.com */ /* Tipo de autenticação */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parâmetros do servidor */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Selecione mysqli se seu servidor tiver */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |
Certifique-se de usar mysqli em $cfg[‘Servers’][$i][‘extension’], defina $cfg[‘Servers’][$i][‘ssl’] como true e especifique os arquivos SSL conforme mostrado. Minha seção completa de servidores fica da seguinte forma:
| | [...] /* Configure de acordo com dbconfig-common se habilitado */ if (!empty($dbname)) { /* Tipo de autenticação */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parâmetros do servidor */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Selecione mysqli se seu servidor tiver */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Opcional: Usuário para recursos avançados */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Opcional: Recursos avançados do phpMyAdmin */ $cfg['Servers'][$i]['pmadb'] = $dbname; $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark'; $cfg['Servers'][$i]['relation'] = 'pma_relation'; $cfg['Servers'][$i]['table_info'] = 'pma_table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; $cfg['Servers'][$i]['history'] = 'pma_history'; $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Descomente o seguinte para habilitar login em contas sem senha, * após tomar nota dos riscos de segurança associados. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Avance para o próximo servidor para o restante da configuração */ $i++; } /* localhost.example.com */ /* Tipo de autenticação */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parâmetros do servidor */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Selecione mysqli se seu servidor tiver */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* remote.example.com */ /* Tipo de autenticação */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parâmetros do servidor */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Selecione mysqli se seu servidor tiver */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* Fim da configuração dos servidores */ [...] | |
É isso - na tela de login do phpMyAdmin, agora deve haver um menu suspenso do qual você pode selecionar o servidor MySQL ao qual deseja se conectar (localhost ou remote.example.com), e se você selecionar um servidor MySQL remoto (como remote.example.com), o phpMyAdmin se conectará a ele através de uma conexão SSL.
4 Links
phpMyAdmin: http://www.phpmyadmin.net/
MySQL: http://www.mysql.com/
Sobre o Autor
Falko Timme é o proprietário da Timme Hosting (hospedagem web nginx ultra-rápida). Ele é o mantenedor principal do HowtoForge (desde 2005) e um dos desenvolvedores principais do ISPConfig (desde 2000). Ele também contribuiu para o livro da O’Reilly “Administração de Sistema Linux”.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.