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.