Cómo instalar y proteger phpMyAdmin en Alma Linux 8

phpMyAdmin es una aplicación de gestión de bases de datos gratuita y de código abierto para MySQL y MariaDB. Te permite gestionar, realizar diversas tareas relacionadas con las bases de datos y ejecutar consultas desde una interfaz basada en web. Está escrito en PHP y proporciona una interfaz robusta y fácil de usar para gestionar bases de datos a través de un navegador web. Es multiplataforma y puede ejecutarse en muchos sistemas operativos, como Windows, macOS, Linux y BSD.

En este tutorial, aprenderás a instalar phpMyAdmin en Alma Linux 8.

Requisitos previos

  • Un servidor que ejecute Alma Linux 8.
  • Nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en el servidor.

Instalar el servidor LEMP

En primer lugar, instala el servidor web Nginx y el servidor de base de datos MariaDB con el siguiente comando:

dnf install nginx mariadb -y

A continuación, instala el repositorio Remi PHP con el siguiente comando:

dnf -y install http://rpms.remirepo.net/enterprise/remi-release-8.rpm

A continuación, desactiva el módulo PHP por defecto y activa el módulo PHP de Remi con el siguiente comando:

dnf module -y reset php
dnf module install php:remi-7.4 -y

A continuación, instala PHP con otras extensiones necesarias mediante el siguiente comando:

dnf install php php-cli php-common php-fpm php-curl php-gd php-mbstring php-process php-snmp php-xml php-zip php-memcached php-mysqlnd php-json php-mbstring php-pdo php-pdo-dblib php-xml unzip wget -y

Una vez instalados todos los paquetes, edita el archivo de configuración PHP-FPM:

nano /etc/php-fpm.d/www.conf

Cambia el usuario y grupo de apache a Nginx:

user = nginx
group = nginx

Guarda y cierra el archivo y, a continuación, inicia y habilita los servicios Nginx, MariaDB y PHP-FPM con el siguiente comando:

systemctl start nginx php-fpm mariadb
systemctl enable nginx php-fpm mariadb

Crear un usuario para phpMyAdmin

A continuación, se recomienda crear un usuario independiente para phpMyAdmin que realice todas las tareas de gestión de la base de datos. En primer lugar, asegura MariaDB ejecutando el siguiente comando:

mysql_secure_installation

Este script establecerá una contraseña de root, eliminará los usuarios anónimos, no permitirá el inicio de sesión de root de forma remota y eliminará la base de datos de prueba, como se muestra a continuación:

Set root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

A continuación, inicia sesión en la MariaDB con el siguiente comando:

mysql

Una vez que hayas iniciado sesión, crea una base de datos y un usuario con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE phpmyadmin CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'password';

A continuación, concede todos los privilegios al usuario admin:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%';

A continuación, vacía los privilegios y sal de la consola MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Instalar phpMyAdmin en Alma Linux 8

A continuación, descarga la última versión de phpMyAdmin desde su sitio web oficial:

wget https://files.phpmyadmin.net/phpMyAdmin/5.1.3/phpMyAdmin-5.1.3-all-languages.zip

Una vez finalizada la descarga, descomprime el archivo descargado con el siguiente comando:

unzip phpMyAdmin-5.1.3-all-languages.zip

A continuación, mueve el directorio extraído al directorio raíz de la web Nginx:

mv phpMyAdmin-5.1.3-all-languages /usr/share/nginx/phpmyadmin

A continuación, copia el archivo de configuración de ejemplo utilizando el siguiente comando:

cp /usr/share/nginx/phpmyadmin/config{.sample,}.inc.php

A continuación, edita el archivo de configuración utilizando el siguiente comando:

nano /usr/share/nginx/phpmyadmin/config.inc.php

Define tu secreto como se muestra a continuación:

$cfg['blowfish_secret'] = 'securekey';

Guarda y cierra el archivo y, a continuación, cambia la propiedad del directorio phpMyAdmin:

chown -R nginx:nginx /usr/share/nginx/phpmyadmin
chown -R nginx:nginx /var/lib/php/session/

Configurar Nginx para phpMyAdmin

A continuación, tendrás que crear un archivo de configuración del host virtual Nginx para phpMyAdmin. Puedes crearlo con el siguiente comando:

nano /etc/nginx/conf.d/phpmyadmin.conf

Añade las siguientes líneas:

server {
    listen       80;
    server_name  phpmyadmin.example.com;
    root         /usr/share/nginx/phpmyadmin;
    
    access_log /var/log/nginx/phpmyadmin_access.log;
    error_log /var/log/nginx/phpmyadmin_error.log;

    index   index.php;

    location / {
        try_files    $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
         try_files $uri =404;
         fastcgi_intercept_errors on;
         include        fastcgi_params;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         fastcgi_pass unix:/run/php-fpm/www.sock;
     }
}

Guarda y cierra el archivo y, a continuación, comprueba si Nginx tiene algún error de configuración sintáctica con el siguiente comando:

nginx -t

Obtendrás la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx php-fpm

Ahora puedes verificar el estado de Nginx con el siguiente comando:

systemctl status nginx

Deberías ver la siguiente salida:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           ??php-fpm.conf
   Active: active (running) since Fri 2022-04-15 10:06:39 UTC; 3s ago
  Process: 85445 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 85443 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 85442 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 85449 (nginx)
    Tasks: 2 (limit: 11412)
   Memory: 3.8M
   CGroup: /system.slice/nginx.service
           ??85449 nginx: master process /usr/sbin/nginx
           ??85450 nginx: worker process

Apr 15 10:06:39 linux systemd[1]: nginx.service: Succeeded.
Apr 15 10:06:39 linux systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Apr 15 10:06:39 linux systemd[1]: Starting The nginx HTTP and reverse proxy server...
Apr 15 10:06:39 linux nginx[85443]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Apr 15 10:06:39 linux nginx[85443]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Apr 15 10:06:39 linux systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Apr 15 10:06:39 linux systemd[1]: Started The nginx HTTP and reverse proxy server.

Configurar el cortafuegos

A continuación, tendrás que permitir el servicio HTTP a través del cortafuegos. Puedes permitirlo con el siguiente comando:

firewall-cmd --permanent --zone public --add-service http

A continuación, recarga el cortafuegos para aplicar los cambios:

firewall-cmd --reload

Acceder a la interfaz web de phpMyAdmin

Ahora, abre tu navegador web y accede a phpMyAdmin utilizando la URL http://phpmyadmin.example.com. Deberías ver la página de inicio de sesión de phpMyAdmin:

Introduce tu nombre de usuario y contraseña de administrador, y haz clic en el botón Ir. Una vez que hayas iniciado sesión, deberías ver el panel de phpMyAdmin:

Haz clic en el botón Bases de datos. Deberías ver la siguiente página:

Indica el nombre de la base de datos que deseas crear y pulsa el botón Crear.

Selecciona las bases de datos que quieras eliminar y haz clic en el botón Eliminar para eliminar una base de datos. Deberías ver la página siguiente:

Haz clic en el botón Aceptar para confirmar y eliminar las bases de datos seleccionadas.

Conclusión

Enhorabuena! has instalado correctamente phpMyAdmin con Nginx en Alma Linux 8. Ahora puedes gestionar tus bases de datos MySQL y MariaDB a través de un navegador web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...