Este tutorial le mostrará cómo instalar phpMyAdmin con Nginx, MariaDB y PHP7.4 (LEMP) en Ubuntu 20.04. phpMyAdmin es una herramienta de administración de base de datos basada en web gratuita y de código abierto escrita en PHP. Proporciona una interfaz web gráfica para que los usuarios administren la base de datos MySQL o MariaDB.
phpMyAdmin permite a los administradores:
- navegar a través de bases de datos y tablas;
- crear, copiar, renombrar, modificar y eliminar bases de datos;
- crear, copiar, renombrar, modificar y eliminar tablas;
- realizar el mantenimiento de la tabla;
- añadir, editar y soltar campos;
- ejecutar cualquier instrucción SQL, incluso múltiples consultas;
- crear, modificar y eliminar índices;
- cargar archivos de texto en tablas;
- crear y leer volcados de tablas o bases de datos;
- exportar datos a formatos SQL, CSV, XML, Word, Excel, PDF y LaTeX;
- administrar múltiples servidores;
- administrar usuarios y privilegios de MySQL;
- verifique la configuración del servidor y la información de tiempo de ejecución con sugerencias de configuración;
- verificar la integridad referencial en las tablas MyISAM;
- cree consultas complejas usando Query-by-example (QBE), automáticamente
- conectando las tablas requeridas;
- crear gráficos en PDF del diseño de la base de datos;
- buscar globalmente en una base de datos o en un subconjunto de ella;
- transformar datos almacenados en cualquier formato utilizando un conjunto de funciones predefinidas, como mostrar datos BLOB como imagen o enlace de descarga;
- administrar tablas InnoDB y claves externas;
Requisitos
Para seguir este tutorial, debe tener un sistema operativo Ubuntu 20.04 ejecutándose en su computadora local o en un servidor remoto.
Si está buscando un VPS (servidor privado virtual), puede hacer clic en este enlace especial para obtener $ 100 de crédito gratis en DigitalOcean. (Solo para nuevos usuarios). Si ya es usuario de DigitalOcean, puede hacer clic en este enlace especial para obtener $50 de crédito gratis en Vultr (solo para nuevos usuarios).
Se supone que ya instaló la pila LEMP en Ubuntu 20.04. Si no es así, consulta el siguiente tutorial.
- Cómo instalar la pila LEMP (Nginx, MariaDB, PHP7.4) en Ubuntu 20.04
Con eso fuera del camino, comencemos con la instalación de phpMyAdmin.
Paso 1:Descargue e instale phpMyAdmin en Ubuntu 20.04
phpMyAdmin está incluido en el repositorio de software de Ubuntu 20.04, por lo que podemos instalarlo fácilmente con el siguiente comando.
sudo apt update sudo apt install phpmyadmin
El comando anterior instalará todas las dependencias necesarias, incluidas las extensiones PHP7. Durante la instalación, le preguntará si desea usar dbconfig-common
para configurar la base de datos. Presione la tecla Tab para seleccionar Sí.
Esto también creará un nuevo usuario de base de datos llamado phpmyadmin
. Dale a este usuario una contraseña.
A continuación, le pedirá que seleccione un servidor web para configurar. Nginx no está en la lista, así que presione la tecla Tab y presione Aceptar para omitir este paso.
Una vez hecho esto, una nueva base de datos llamada phpmyadmin
se crea y el usuario de la base de datos phpmyadmin
tiene los privilegios necesarios para administrar esta base de datos. Si tiene curiosidad como yo, puede iniciar sesión en MariaDB y verificar qué privilegios phpmyadmin
usuario ha sido concedido.
Puede usar el siguiente comando para iniciar sesión en el servidor MariaDB.
sudo mysql -u root
Luego verifique los privilegios.
show grants for [email protected];
Salida:
Como puede ver, el usuario phpmyadmin
tiene todos los privilegios en la base de datos phpmyadmin
. Ahora puede salir ejecutando:
exit;
Paso 2:Crear bloque de servidor Nginx para phpMyAdmin
Para poder acceder a la interfaz web de phpMyAdmin, debemos crear un bloque de servidor Nginx ejecutando el siguiente comando.
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
Lo configuraremos para que podamos acceder a phpMyAdmin a través de un subdominio. Pegue el siguiente texto en el archivo. Reemplace pma.example.com
con su subdominio real y no olvide crear un registro DNS A para él.
server { listen 80; listen [::]:80; server_name pma.example.com; root /usr/share/phpmyadmin/; index index.php index.html index.htm index.nginx-debian.html; access_log /var/log/nginx/phpmyadmin_access.log; error_log /var/log/nginx/phpmyadmin_error.log; location / { try_files $uri $uri/ /index.php; } location ~ ^/(doc|sql|setup)/ { deny all; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~ /\.ht { deny all; } }
Sus archivos phpMyAdmin están en /usr/share/phpmyadmin/
directorio. Guarde y cierre el archivo. Luego pruebe las configuraciones de Nginx.
sudo nginx -t
Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.
sudo systemctl reload nginx
Ahora debería poder acceder a la interfaz web de phpMyAdmin a través de
pma.example.com
Paso 3:Instalación del certificado TLS
Para proteger la interfaz web de phpMyadmin, podemos instalar un certificado TLS gratuito de Let's Encrypt. Instale el cliente Let's Encrypt desde el repositorio de software de Ubuntu 20.04 como se muestra a continuación:
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
es el complemento de Nginx para Certbot. Ahora ejecute el siguiente comando para obtener e instalar el certificado TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d pma.example.com --email [email protected]
donde:
- –nginx :utilice el autenticador y el instalador de Nginx
- –de acuerdo :Acepto los términos de servicio de Let's Encrypt
- –redireccionar :aplicar HTTPS mediante redireccionamiento 301.
- –hsts :agregue el encabezado Strict-Transport-Security a cada respuesta HTTP.
- –grapa-ocsp :Habilita el grapado OCSP.
- -imprescindible :Agrega la extensión OCSP Must Staple al certificado.
- -d va seguido de una lista de nombres de dominio, separados por una coma. Puede agregar hasta 100 nombres de dominio.
- –correo electrónico :Correo electrónico utilizado para el registro y el contacto de recuperación.
Se le preguntará si desea recibir correos electrónicos de EFF (Electronic Frontier Foundation). Después de elegir S o N, su certificado TLS se obtendrá y configurará automáticamente para usted, lo cual se indica en el mensaje a continuación.
Paso 4:pruebe su certificado TLS
Vaya a ssllabs.com para probar su certificado TLS y su configuración. Debería obtener A+ porque HSTS está habilitado.
Paso 5:Solucione el error de inicio de sesión de phpMyAdmin
Si inicia sesión con la cuenta raíz de MariaDB, es posible que vea el siguiente error.
#1698 - Access denied for user 'root '@'localhost'
y
mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'
Si inicia sesión con el usuario phpmyadmin
, no verá el error anterior. Sin embargo, el usuario phpmyadmin
solo se puede usar para administrar phpmyadmin
base de datos. La causa del error es que, de forma predeterminada, el usuario raíz de MariDB se autentica a través del complemento unix_socket, en lugar de usar mysql_native_password
enchufar. Para solucionar este problema, podemos crear otro usuario administrador y otorgar todos los privilegios al nuevo usuario administrador.
Inicie sesión en el servidor MariaDB desde la línea de comandos.
sudo mariadb -u root
Cree un usuario administrador con autenticación de contraseña.
create user [email protected] identified by 'your-chosen-password';
Otorgue todos los privilegios en todas las bases de datos.
grant all privileges on *.* to [email protected] with grant option;
Vaciar privilegios y salir;
flush privileges; exit;
Ahora puede iniciar sesión en phpMyAdmin con la cuenta de administrador y administrar todas las bases de datos.
Renovación automática del certificado TLS
Para renovar automáticamente el certificado de Let's Encrypt, simplemente edite el archivo crontab del usuario raíz.
sudo crontab -e
Luego agregue la siguiente línea en la parte inferior.
@daily certbot renew --quiet && systemctl reload nginx
Es necesario volver a cargar Nginx para que recoja el nuevo certificado para los clientes.