phpMyAdmin es la herramienta web de administración para bases de datos MySQL y MariaDB más extendida en el ecosistema open source. Aunque la mayoría de distribuciones GNU/Linux ofrecen paquetes en sus repositorios oficiales, realizar la instalación manual desde el código fuente oficial ofrece ventajas claras: control absoluto sobre la versión desplegada, independencia de dependencias de terceros y aislamiento total del entorno web.
En este tutorial aprenderás a instalar phpMyAdmin en un VirtualHost dedicado en GNU/Linux (válido para familias Debian/Ubuntu y RHEL/Rocky Linux/AlmaLinux/Fedora), alojarlo bajo un subdominio propio (db.oscarcifuentes.cl) y securizar su acceso restringiéndolo a tu dirección IP mediante directivas modernas de Apache 2.4.
Requisitos Previos para Instalar phpMyAdmin
Antes de comenzar el despliegue para instalar phpMyAdmin, verifica que tu entorno cuenta con los siguientes componentes:
- Una distribución GNU/Linux en producción o entorno local.
- Una pila LAMP o LEMP básica activa (Servidor Web Apache, motor MySQL/MariaDB y PHP 8.x con extensiones). Tambien puede ser solo una instalacion basica de MariaDB o MySQL.
- Un subdominio configurado en tu zona DNS (en este ejemplo:
db.oscarcifuentes.cl) apuntando a la IP pública de tu servidor. - Permisos de superusuario (
sudo).
Paso 1: Instalar Dependencias y Extensiones de PHP Requeridas
Instalar phpMyAdmin requiere extensiones de PHP clave para cifrado, compresión, manipulación de cadenas y conexión a base de datos.
En distribuciones basadas en Debian / Ubuntu:
sudo apt update
sudo apt install curl wget tar php-mbstring php-zip php-gd php-json php-curl php-mysql -yEn distribuciones basadas en RHEL / Rocky Linux / AlmaLinux / Fedora:
sudo dnf install curl wget tar php-mbstring php-zip php-gd php-json php-curl php-mysqlnd -yTras instalar los módulos, reinicia el servidor web Apache:
# En Debian/Ubuntu:
sudo systemctl restart apache2
# En RHEL/Rocky/AlmaLinux:
sudo systemctl restart httpdPaso 2: Crear la Estructura de Directorios para el VirtualHost
Mantener una estructura ordenada de carpetas facilita la administración y rotación de registros (logs). Crearemos un árbol específico para el subdominio:
sudo mkdir -p /var/www/vhosts/db.oscarcifuentes.cl/public_html
sudo mkdir -p /var/www/vhosts/db.oscarcifuentes.cl/logs
sudo mkdir -p /var/www/vhosts/db.oscarcifuentes.cl/tmpPaso 3: Descarga phpMyAdmin desde la Fuente Oficial
Descargaremos la última versión estable multiidioma de phpMyAdmin directamente desde su portal oficial.
1. Descargar el archivo comprimido
cd /tmp
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz2. Descomprimir e implementar en el DocumentRoot
Descomprimimos el paquete extrayendo su contenido directamente dentro del directorio public_html sin niveles redundantes:
sudo tar -xzf phpMyAdmin-latest-all-languages.tar.gz -C /var/www/vhosts/db.oscarcifuentes.cl/public_html --strip-components=13. Crear el archivo de configuración base
Para instalar phpMyAdmin incluye una plantilla de configuración. Creamos una copia funcional:
cd /var/www/vhosts/db.oscarcifuentes.cl/public_html
sudo cp config.sample.inc.php config.inc.phpAbre config.inc.php con un editor de texto:
sudo nano config.inc.phpUbica la directiva $cfg['blowfish_secret'] y asigna una cadena secreta aleatoria de 32 caracteres para el cifrado de cookies:
$cfg['blowfish_secret'] = 'x8K#m9P$vL2@qZ5&wY1!tN7*bC4^rE6+'; /* Cadena aleatoria de 32 bytes */También añadimos la ruta del directorio temporal al final del archivo:
$cfg['TempDir'] = '/var/www/vhosts/db.oscarcifuentes.cl/tmp';Guarda los cambios (Ctrl + O, Enter) y sal (Ctrl + X).
Paso 4: Ajustar Permisos del Sistema de Archivos
Asignamos la propiedad de los archivos al usuario correspondiente del servidor web según la distribución que estés ejecutando.
En Debian / Ubuntu (www-data):
sudo chown -R www-data:www-data /var/www/vhosts/db.oscarcifuentes.cl
sudo chmod -R 755 /var/www/vhosts/db.oscarcifuentes.cl/public_html
sudo chmod 770 /var/www/vhosts/db.oscarcifuentes.cl/tmpEn RHEL / Rocky Linux / AlmaLinux (apache):
sudo chown -R apache:apache /var/www/vhosts/db.oscarcifuentes.cl
sudo chmod -R 755 /var/www/vhosts/db.oscarcifuentes.cl/public_html
sudo chmod 770 /var/www/vhosts/db.oscarcifuentes.cl/tmpNota para sistemas con SELinux activo (RHEL/Rocky):
sudo chcon -R -t httpd_sys_rw_content_t /var/www/vhosts/db.oscarcifuentes.cl/tmpPaso 5: Configuración del VirtualHost en Apache
Configuraremos un host virtual con aislamiento estricto y control de acceso basado en IP. En lugar de la sintaxis obsoleta de Apache 2.2 (Order Allow,Deny), utilizaremos la directiva moderna Require de Apache 2.4.
1. Crear el archivo de configuración
- En Debian / Ubuntu:
sudo nano /etc/apache2/sites-available/db.oscarcifuentes.cl.conf - En RHEL / Rocky Linux / AlmaLinux:
sudo nano /etc/httpd/conf.d/db.oscarcifuentes.cl.conf
2. Añadir la configuración del VirtualHost:
<VirtualHost *:80>
ServerAdmin admin@oscarcifuentes.cl
ServerName db.oscarcifuentes.cl
DocumentRoot /var/www/vhosts/db.oscarcifuentes.cl/public_html
<Directory /var/www/vhosts/db.oscarcifuentes.cl/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
# Restricción de acceso: Solo IPs autorizadas o red interna/VPN
Require ip 190.160.0.50 10.8.0.0/24
</Directory>
# Excepción para validaciones ACME de Let's Encrypt / Certbot
<Location "/.well-known/acme-challenge/">
Require all granted
</Location>
# Rutas personalizadas de registros
ErrorLog /var/www/vhosts/db.oscarcifuentes.cl/logs/error.log
CustomLog /var/www/vhosts/db.oscarcifuentes.cl/logs/access.log combined
</VirtualHost>💡 Consejo: Reemplaza
190.160.0.50por tu dirección IP pública real o el rango de tu VPN (10.8.0.0/24). De este modo, cualquier petición externa recibirá automáticamente un error403 Forbidden.
Paso 6: Habilitar el Sitio y Reiniciar Apache
En Debian / Ubuntu:
Habilita el sitio y el módulo de reescritura:
sudo a2ensite db.oscarcifuentes.cl.conf
sudo a2enmod rewrite
sudo apache2ctl configtest
sudo systemctl reload apache2En RHEL / Rocky Linux / AlmaLinux:
Comprueba la sintaxis y recarga el servicio:
sudo httpd -t
sudo systemctl reload httpdProbar la Instalación en el Navegador
Para revisar el proceso de instalar phpMyAdmin, abre tu navegador de preferencia e introduce la dirección IP de tu servidor (ejemplo: http://db.TU_DIRECCION_IP). Deberías visualizar la página de login para phpMyAdmin.

Paso 7: Instalar Certificado SSL/TLS con Certbot (Opcional pero Recomendado)
Toda conexión hacia un panel de base de datos debe transitar obligatoriamente bajo HTTPS. Despues de instalar phpMyAdmin, genera un certificado gratuito con Let's Encrypt:
# Debian/Ubuntu:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d db.oscarcifuentes.cl
# RHEL/Rocky Linux:
sudo dnf install certbot python3-certbot-apache -y
sudo certbot --apache -d db.oscarcifuentes.clPreguntas Frecuentes (FAQ)
¿Por qué no usar simplemente apt install phpmyadmin?
Instalar desde los repositorios de la distribución suele anclar versiones antiguas que tardan meses en recibir novedades o parches menores. Además, el instalador por defecto ubica alias globales (/phpmyadmin) en todos los hosts virtuales del servidor, exponiendo el panel en dominios públicos.
¿Cómo puedo agregar múltiples IPs autorizadas en Apache 2.4?
Basta con listar las direcciones IP o bloques CIDR separados por un espacio dentro de la directiva:
Require ip 200.10.20.30 192.168.1.0/24 10.0.0.5¿Qué hacer si obtengo un error de "blowfish_secret" al iniciar sesión?
Asegúrate de haber asignado una clave de exactamente 32 caracteres aleatorios a la variable $cfg['blowfish_secret'] en el archivo config.inc.php.
Conclusión
Has completado con éxito la guía para instalar phpMyAdmin en un VirtualHost en Linux bajo un subdominio aislado (db.oscarcifuentes.cl). Esta arquitectura garantiza un entorno administrativo seguro, optimizado y protegido frente a escaneos automatizados de vulnerabilidades en Internet.
