Servidor Ubuntu 18.04 / Cómo Instalar phpMyAdmin

Para instalar phpMyAdmin en un servidor Ubuntu 18.04, prepara Apache, PHP y MySQL o MariaDB, luego instala el paquete phpmyadmin e inicia sesión con una cuenta de base de datos. Antes de la instalación, restringe las rutas de acceso para que la herramienta de administración no esté expuesta externamente, y no cambies la configuración de autenticación del root de la base de datos.

Cosas a Verificar Antes de la Instalación

phpMyAdmin es una herramienta para gestionar bases de datos y tablas MySQL o MariaDB a través de un navegador web. Este artículo describe el caso de usar Apache en un servidor Ubuntu 18.04 existente. Si está utilizando un servidor web y un servidor de base de datos separados o está usando Nginx, la ruta de conexión y la configuración serán diferentes.

El mantenimiento de seguridad estándar para Ubuntu 18.04 LTS terminó en mayo de 2023. Para los sistemas existentes, se recomienda actualizar a una versión de Ubuntu con soporte. Si no puede actualizar de inmediato, verifique si se aplica el mantenimiento de seguridad de Ubuntu Pro y el alcance de actualización para phpMyAdmin, PHP y los paquetes de base de datos. Para más detalles, consulte Guía de Mantenimiento de Seguridad de Ubuntu.

El siguiente ejemplo asume que tienes privilegios de sudo y ya has instalado Apache, PHP y MySQL o MariaDB, y que puedes acceder al servidor vía SSH. Haz una copia de seguridad de tu base de datos y verifica los repositorios de paquetes y las configuraciones existentes del sitio antes de la instalación. Dado que la configuración de Apache puede aplicarse automáticamente durante la instalación, restringe primero el acceso desde fuentes externas usando un firewall o una red privada.

Restringiendo la Ruta de Gestión en Apache

El siguiente ejemplo muestra cómo conectarse directamente a Apache y permitir solo conexiones locales al servidor. Primero, crea el archivo /etc/apache2/conf-available/phpmyadmin-local.conf y guarda el siguiente contenido.

<Location /phpmyadmin>
    Require local
</Location>

Después de activar la configuración, verifica la sintaxis y recarga Apache solo si pasa correctamente.

sudo a2enconf phpmyadmin-local
sudo apache2ctl configtest

Cuando se muestre Syntax OK, ejecute el siguiente comando. Si hay errores, modifique la configuración y verifique nuevamente.

sudo systemctl reload apache2

Esta configuración se aplica a la ruta de ejemplo. Si tiene otros alias o hosts virtuales, verifique también esas rutas. Si hay un proxy inverso delante, Apache podría ver la dirección del proxy como la dirección del cliente, por lo que las restricciones de acceso no se pueden garantizar solo con este ejemplo. Revise por separado el manejo de las direcciones reales de los clientes por parte de proxies confiables y el firewall. Puede consultar la directiva Require en la documentación de control de acceso de Apache.

Instalación de phpMyAdmin

Actualice la lista de paquetes e instale phpMyAdmin. La disponibilidad de paquetes y las versiones pueden variar según la configuración del repositorio y del mantenimiento de seguridad.

sudo apt update
sudo apt install phpmyadmin

Cuando se muestre una pantalla de instalación interactiva, verifique lo siguiente:

  1. En la pantalla de selección del servidor web, elija Apache2. Asegúrese de que esté marcado antes de continuar. Simplemente presionar Enter puede no seleccionar el elemento.
  2. Si se le pregunta sobre la configuración de dbconfig-common, seleccione Sí si desea que el paquete configure una base de datos para las funciones adicionales de phpMyAdmin. Esta base de datos es diferente de las bases de datos de la aplicación que está gestionando. Si planea administrar la configuración existente usted mismo, puede elegir No.
  3. En la pantalla que solicita una contraseña, verifique la cuenta y el propósito mostrados, e ingrese una contraseña segura. La autenticación del administrador de la base de datos requerida durante el proceso de instalación puede variar según el método de autenticación del servidor existente.

Después de la instalación, verifique los archivos de configuración y si el servicio Apache está activo. La configuración para el paquete de Ubuntu se encuentra principalmente en /etc/phpmyadmin y puede variar según la configuración del paquete.

ls /etc/phpmyadmin
systemctl status apache2 --no-pager

Acceso mediante túnel SSH

Abra el cliente SSH en la PC del administrador y ejecute el siguiente comando. Reemplace user y server con la cuenta SSH real y la dirección del servidor. Conecta el puerto 8080 en la PC del administrador al puerto local 80 del servidor y puede usarse mientras se mantenga la conexión SSH.

ssh -L 127.0.0.1:8080:127.0.0.1:80 user@server

Abra http://127.0.0.1:8080/phpmyadmin en el navegador de la misma PC. El navegador y el cliente SSH deben ejecutarse en la misma PC, y Apache en el servidor debe servir la ruta en el puerto local 80. Cuando aparezca la pantalla de inicio de sesión, ingrese el nombre de usuario y la contraseña de la base de datos autorizados. Terminar la sesión SSH también cerrará el túnel.

Si su entorno está configurado para acceder directamente vía HTTPS, se requiere un certificado TLS válido y restricciones de acceso separadas. Configure las IP permitidas en su firewall o Apache según la dirección real del administrador, y verifique los resultados de acceso desde direcciones tanto permitidas como no permitidas. Se recomienda no exponer la página de administración a toda la internet.

Cuentas y permisos de inicio de sesión

El inicio de sesión en phpMyAdmin se autentica utilizando una cuenta de MySQL o MariaDB. Use una cuenta dedicada con permisos solo para las bases de datos y operaciones necesarias para sus operaciones. El host y los permisos de la cuenta deben coincidir con la configuración del servidor de base de datos real. Verifique dos veces el destino y la copia de seguridad antes de subir archivos o realizar cambios de datos.

La cuenta root de Linux y la cuenta root de la base de datos son diferentes. Si el root de la base de datos está configurado para autenticación por socket local, puede que no sea usable para inicio de sesión web. No intente resolver esto modificando directamente las tablas del sistema o eliminando el plugin de autenticación del root. Cree una cuenta separada con los permisos requeridos y siga la documentación de administración de cuentas para ese producto de base de datos.

Cuando no se pueda conectar

  • 403 Prohibido: Verifique si se han aplicado restricciones de acceso y si está usando un túnel SSH. Además, verifique la dirección del cliente reconocida por el proxy y Apache.
  • 404 No Encontrado: Asegúrese de que Apache2 esté seleccionado durante la instalación y que la configuración de Apache de phpMyAdmin esté habilitada. Si está usando otros hosts virtuales o alias, revise también esas configuraciones.
  • Error de Inicio de Sesión: Verifique el nombre de usuario de la base de datos, la contraseña, el host de conexión y los permisos. La cuenta del servidor web o la cuenta SSH pueden ser diferentes de la cuenta de la base de datos.
  • Error de Página PHP: Verifique la integración de Apache y PHP, las extensiones de PHP requeridas y los registros de errores de Apache. Las rutas de instalación y configuración pueden variar según el paquete de distribución.

Si necesita revertir los cambios de configuración, restaure desde una copia de seguridad existente y verifique nuevamente la sintaxis. Deshabilitar los ajustes de restricción local mencionados en este artículo puede exponer la ruta de administración al acceso externo debido a otras configuraciones, por lo que primero asegúrese de aplicar controles de acceso alternativos. Para la instalación y los ajustes de seguridad de phpMyAdmin, consulte la documentación oficial de instalación.