MySQL, phpMyAdmin · 5 min read · Jan 29, 2026

Administrando Múltiples Servidores MySQL Desde Una Instalación de phpMyAdmin (Usando Cifrado SSL) - Página 2

3 Configurando phpMyAdmin

local.example.com:

Antes de proceder con la configuración de phpMyAdmin, primero verifiquemos si realmente podemos conectarnos desde local.example.com al servidor MySQL en remote.example.com (a través de una conexión 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 -p

Se te pedirá la contraseña, y si todo va bien, se te concederá acceso:

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
Introduce la contraseña:
Bienvenido al monitor de MySQL. Los comandos terminan con ; o \g.
Tu id de conexión MySQL es 101
Versión del servidor: 5.5.24-8-log (Debian)

Copyright (c) 2000, 2011, Oracle y/o sus afiliados. Todos los derechos reservados.

Oracle es una marca registrada de Oracle Corporation y/o sus
afiliados. Otros nombres pueden ser marcas comerciales de sus respectivos
propietarios.

Escribe 'help;' o '\h' para ayuda. Escribe '\c' para limpiar la declaración de entrada actual.
mysql>

Escribe

quit;

para salir de la consola de MySQL.

Ahora llegamos a la parte donde configuramos phpMyAdmin - asumo que ya puedes usar phpMyAdmin para conectarte al servidor MySQL local, y ahora queremos configurarlo para que también podamos conectarnos a remote.example.com usando SSL (en la pantalla de inicio de sesión de phpMyAdmin, habrá un menú desplegable del cual puedes seleccionar el servidor al que deseas conectarte).

Antes de que phpMyAdmin pueda usar SSL para comunicarse con el servidor MySQL remoto, necesitamos modificar un poco sus fuentes - abre mysqli.dbi.lib.php (en Debian y Ubuntu, está en /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php si has instalado phpMyAdmin a través de apt):

vi /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php

Encuentra la siguiente sección…

| | [...] /* Opcionalmente habilitar SSL */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |

… y modifícalo de la siguiente manera:

| | [...] /* 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; } [...] | |

A continuación, abre config.inc.php - si estás en Debian/Ubuntu y has instalado phpMyAdmin a través de apt, está en /etc/phpmyadmin/config.inc.php:

vi /etc/phpmyadmin/config.inc.php 

Encuentra la siguiente sección:

| | [...] /* Configurar de acuerdo a dbconfig-common si está habilitado */ if (!empty($dbname)) { /* Tipo de autenticación */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parámetros del 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; /* Seleccionar mysqli si tu servidor lo tiene */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Opcional: Usuario para características avanzadas */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Opcional: Características avanzadas de 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'; /* Descomentar lo siguiente para habilitar el inicio de sesión en cuentas sin contraseña, * después de tener en cuenta los riesgos de seguridad asociados. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Avanzar al siguiente servidor para el resto de la configuración */ $i++; } [...] | |

Agrega la siguiente sección debajo para localhost (= local.example.com):

| | [...] /* localhost.example.com */ /* Tipo de autenticación */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parámetros del servidor */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Seleccionar mysqli si tu servidor lo tiene */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |

(En la línea $cfg[‘Servers’][$i][‘hide_db’] puedes especificar todas las bases de datos que no deseas que aparezcan en phpMyAdmin - como information_schema, performance_schema y test.)

Y para remote.example.com, agrega la siguiente sección:

| | [...] /* remote.example.com */ /* Tipo de autenticación */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parámetros del 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; /* Seleccionar mysqli si tu servidor lo tiene */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |

Asegúrate de usar mysqli en $cfg[‘Servers’][$i][‘extension’], establece $cfg[‘Servers’][$i][‘ssl’] en true y especifica los archivos SSL como se muestra. Mi sección completa de servidores se ve de la siguiente manera:

| | [...] /* Configurar de acuerdo a dbconfig-common si está habilitado */ if (!empty($dbname)) { /* Tipo de autenticación */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parámetros del 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; /* Seleccionar mysqli si tu servidor lo tiene */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Opcional: Usuario para características avanzadas */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Opcional: Características avanzadas de 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'; /* Descomentar lo siguiente para habilitar el inicio de sesión en cuentas sin contraseña, * después de tener en cuenta los riesgos de seguridad asociados. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Avanzar al siguiente servidor para el resto de la configuración */ $i++; } /* localhost.example.com */ /* Tipo de autenticación */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parámetros del servidor */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Seleccionar mysqli si tu servidor lo tiene */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* remote.example.com */ /* Tipo de autenticación */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Parámetros del 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; /* Seleccionar mysqli si tu servidor lo tiene */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* Fin de la configuración de servidores */ [...] | |

Eso es todo - en la pantalla de inicio de sesión de phpMyAdmin, ahora debería haber un menú desplegable del cual puedes seleccionar el servidor MySQL al que deseas conectarte (localhost o remote.example.com), y si seleccionas un servidor MySQL remoto (como remote.example.com), phpMyAdmin se conectará a él a través de una conexión SSL.

4 Enlaces

Sobre El Autor

Falko Timme es el propietario de Timme Hosting (alojamiento web nginx ultra-rápido). Es el mantenedor principal de HowtoForge (desde 2005) y uno de los desarrolladores principales de ISPConfig (desde 2000). También ha contribuido al libro de O’Reilly “Administración del Sistema Linux”.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.