Este tutorial le mostrará cómo instalar phpMyAdmin con Apache, MariaDB, PHP7.3 (pila LAMP) en Debian 10 Buster. 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. También vamos a aprender cómo habilitar la autenticación de dos factores en phpMyAdmin.
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, necesita un sistema operativo Debian 10 ejecutándose en su computadora local o en un servidor remoto.
Si está buscando un VPS (servidor privado virtual), puede crear una cuenta en Vultr a través de mi enlace de referencia para obtener $ 50 de crédito gratis (solo para nuevos usuarios). Y si necesita configurar phpMyAdmin con un nombre de dominio, le recomiendo comprar nombres de dominio de NameCheap porque el precio es bajo y ofrecen protección de privacidad whois de forma gratuita.
Se supone que ya instaló la pila LAMP en Debian 10. De lo contrario, consulte el siguiente tutorial.
- Cómo instalar la pila LAMP (Apache, MariaDB, PHP7.3) en Debian 10 Buster
Tenga en cuenta que debe tener privilegios de root al instalar el software en Debian. Puedes agregar sudo al comienzo de un comando, o use su -
Comando para cambiar a usuario root.
Con eso fuera del camino, comencemos con la instalación de phpMyAdmin.
Paso 1:Descargue phpMyAdmin en el servidor Debian 10
phpMyAdmin no está incluido en el repositorio de software de Debian 10, por lo que debemos descargar el software manualmente. Vaya a la página de descarga de phpMyAdmin para verificar la última versión estable. Luego ejecute el siguiente comando para descargarlo.
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip
Sugerencia:siempre puede usar el formato de URL anterior para descargar la última versión estable de phpMyAdmin. Simplemente reemplace 4.9.0.1 con el último número de versión.
Luego extráigalo.
sudo apt install unzip unzip phpMyAdmin-4.9.0.1-all-languages.zip
Mover phpMyadmin 4.9 a /usr/share/
directorio.
sudo mv phpMyAdmin-4.9.0.1-all-languages /usr/share/phpmyadmin
Luego haga que el usuario del servidor web (www-data
) como propietario de este directorio.
sudo chown -R www-data:www-data /usr/share/phpmyadmin
Paso 2:Cree una base de datos MariaDB y un usuario para phpMyAdmin
Ahora debemos iniciar sesión en la consola de MariaDB y crear una base de datos y un usuario para phpMyAdmin. De forma predeterminada, el paquete MaraiDB en Debian usa unix_socket para autenticar el inicio de sesión del usuario, lo que básicamente significa que puede usar el nombre de usuario y la contraseña del sistema operativo para iniciar sesión en la consola de MariaDB. Entonces puede ejecutar el siguiente comando para iniciar sesión sin proporcionar la contraseña de root de MariaDB.
sudo mysql -u root
Luego, cree una nueva base de datos para phpMyAdmin usando el siguiente comando SQL. Este tutorial lo llama phpmyadmin
, puede usar el nombre que desee para la base de datos.
CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
El siguiente comando SQL creará el phpmyadmin
usuario de la base de datos y establezca una contraseña, y al mismo tiempo otorgue todos los permisos de la nueva base de datos al nuevo usuario para que luego phpMyAdmin pueda escribir en la base de datos. Reemplace los textos en rojo con su contraseña preferida.
GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'your_preferred_password';
Vacíe la tabla de privilegios y salga de la consola de MariaDB.
FLUSH PRIVILEGES; EXIT;
Paso 3:Instale los módulos PHP requeridos y recomendados.
Ejecute el siguiente comando para instalar los módulos PHP requeridos o recomendados por phpMyAdmin.
sudo apt install php-imagick php-phpseclib php-php-gettext php7.3-common php7.3-mysql php7.3-gd php7.3-imap php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp
Luego reinicie Apache.
sudo systemctl restart apache2
Paso 4:Cree la configuración de Apache para phpMyAdmin
Si desea acceder a la interfaz web de phpMyAdmin desde un subdirectorio, cree un fragmento de configuración con el siguiente comando.
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Pegue el siguiente texto en el archivo.
# phpMyAdmin default Apache configuration Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options SymLinksIfOwnerMatch DirectoryIndex index.php <IfModule mod_php5.c> <IfModule mod_mime.c> AddType application/x-httpd-php .php </IfModule> <FilesMatch ".+\.php$"> SetHandler application/x-httpd-php </FilesMatch> php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/ php_admin_value mbstring.func_overload 0 </IfModule> <IfModule mod_php.c> <IfModule mod_mime.c> AddType application/x-httpd-php .php </IfModule> <FilesMatch ".+\.php$"> SetHandler application/x-httpd-php </FilesMatch> php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/ php_admin_value mbstring.func_overload 0 </IfModule> </Directory> # Disallow web access to directories that don't need it <Directory /usr/share/phpmyadmin/templates> Require all denied </Directory> <Directory /usr/share/phpmyadmin/libraries> Require all denied </Directory> <Directory /usr/share/phpmyadmin/setup/lib> Require all denied </Directory>
Guarde y cierre el archivo. Luego habilite este fragmento de configuración.
sudo a2enconf phpmyadmin.conf
También necesitamos crear la carpeta temporal phpMyAdmin.
sudo mkdir -p /var/lib/phpmyadmin/tmp sudo chown www-data:www-data /var/lib/phpmyadmin/tmp
Vuelva a cargar Apache para que los cambios surtan efecto.
sudo systemctl reload apache2
Ahora puede acceder a la interfaz web de phpMyAdmin en
your-server-ip/phpmyadmin
Si phpMyAdmin está instalado en su computadora Debian local, puede acceder a la interfaz web de phpMyAdmin escribiendo el siguiente texto en la barra de direcciones del navegador.
localhost/phpmyadmin
Si la conexión se rechaza o no se completa, es posible que haya un firewall que impida las solicitudes HTTP. Si está utilizando el firewall de iptables, debe ejecutar el siguiente comando para abrir los puertos TCP 80 y 443.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
Si está utilizando un firewall UFW, ejecute este comando para abrir los puertos TCP 80 y 443.
sudo ufw allow http sudo ufw allow https
Paso 5:Acceda a phpMyAdmin desde un subdominio
A veces, es posible que desee utilizar un subdominio para acceder a la interfaz web de phpMyAdmin. De esta forma, puede habilitar HTTPS para cifrar el tráfico.
Primero, necesitamos crear un servidor virtual Apache para phpMyAdmin. El fragmento de código de configuración de phpMyAdmin existente se puede utilizar como plantilla. Vamos a copiarlo en un archivo nuevo.
sudo cp /etc/apache2/conf-enabled/phpmyadmin.conf /etc/apache2/sites-available/phpmyadmin.conf
Luego edite el nuevo archivo con un editor de texto de línea de comando, como Nano.
sudo nano /etc/apache2/sites-available/phpmyadmin.conf
Agregue las siguientes líneas al principio de este archivo. Reemplace pma.example.com con su subdominio preferido para phpMyAdmin. No olvide crear un registro DNS A para este subdominio.
<VirtualHost *:80> ServerName pma.example.com DocumentRoot /usr/share/phpmyadmin ErrorLog ${APACHE_LOG_DIR}/pma.error.log CustomLog ${APACHE_LOG_DIR}/pma.access.log combined
Agregue la siguiente línea al final de este archivo.
</VirtualHost>
Guarde y cierre el archivo. (Para guardar un archivo en el editor de texto Nano, presione Ctrl+O
, luego presione Entrar para confirmar. Para salir, presiona Ctrl+X
.) Luego habilite este host virtual.
sudo a2ensite phpmyadmin.conf
Vuelva a cargar el servidor web Apache para que este cambio surta efecto.
sudo systemctl reload apache2
Ahora debería poder acceder a la interfaz web de phpMyAdmin a través de
pma.example.com
Antes de ingresar las credenciales de usuario en el formulario de inicio de sesión, habilitemos HTTPS.
Paso 6:habilite HTTPS en phpMyAdmin con Apache
Para proteger la interfaz web de phpMyadmin, podemos instalar un certificado TLS gratuito de Let's Encrypt. Ejecute el siguiente comando para instalar el cliente Let's Encrypt (certbot) desde el repositorio de software Debian 10.
sudo apt install certbot python3-certbot-apache
Python3-certbot-apache
es el complemento de Apache para Certbot. Ahora ejecute el siguiente comando para obtener e instalar el certificado TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email [email protected]
Explicación:
- –apache: Use el autenticador e instalador de Apache
- –de acuerdo :Acepto los términos de servicio de Let's Encrypt
- –redireccionar :Agregar redirección 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 comas. 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 7:Ejecute el script de configuración de phpMyAdmin
Introduzca lo siguiente en la barra de direcciones de su navegador.
your-server-ip/phpmyadmin/setup
o
pma.example.com/setup
Haga clic en New Server
botón para configurar un servidor.
Luego simplemente haga clic en Apply
botón.
A continuación, haga clic en el botón Mostrar para mostrar el archivo de configuración.
En el /usr/share/phpmyadmin/
directorio, cree el archivo config.inc.php.
sudo nano /usr/share/phpmyadmin/config.inc.php
Copie el contenido de config.inc.php
desde la página de configuración de phpMyAdmin y péguelos en /usr/share/phpmyadmin/config.inc.php
archivo.
Paso 8:Solucione el error de inicio de sesión de phpMyAdmin
Ahora, si intenta iniciar sesión en phpMyAdmin 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 resolver 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 mysql -u root
Cree un usuario administrador con autenticación de contraseña.
create user [email protected] identified by 'your-preferred-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 phpMyAmin con el admin
cuenta y administrar todas las bases de datos.
Paso 9:configure el almacenamiento de configuración de phpMyAdmin
Ahora, en el panel de control de phpMyAdmin, puede ver un mensaje de advertencia.
The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. Find out why. Or alternately go to 'Operations' tab of any database to set it up there.
Haga clic en el enlace Descubra por qué. Luego haga clic en el enlace Crear para crear tablas en phpmyadmin
base de datos.
Paso 10:Restricción del acceso al directorio /setup
Para restringir el acceso al directorio /setup, podemos habilitar la autenticación de contraseña básica con el servidor web Apache. Ejecute el siguiente comando para establecer una contraseña para el usuario admin
. /etc/apache2/htpasswd
El archivo se utiliza para almacenar nombres de usuario y contraseñas.
sudo htpasswd -c /etc/apache2/htpasswd admin
Luego edite el archivo de configuración de Apache para phpMyAdmin
sudo nano /etc/apache2/sites-available/phpmyadmin-le-ssl.conf
o
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Agregue las siguientes líneas.
# Authorize for setup <Directory /usr/share/phpmyadmin/setup> <IfModule mod_authz_core.c> <IfModule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /etc/apache2/htpasswd </IfModule> Require valid-user </IfModule> </Directory>
Guarde y cierre el archivo. Luego, vuelva a cargar Apache para que los cambios surtan efecto.
sudo systemctl reload apache2
Si vuelve a acceder al script de configuración de phpMyAdmin, se le pedirá que introduzca el nombre de usuario y la contraseña.
Habilitar autenticación de dos factores
También puede fortalecer phpMyAdmin habilitando la autenticación de dos factores, que es una función agregada en la versión 4.8. Para habilitarlo, inicie sesión en phpMyAdmin. Luego ve a Settings
-> Two-factor authentication
y seleccione Aplicación de autenticación (2FA) .
Después de hacer clic en Configurar autenticación de dos factores botón, se le presentará un código QR, que debe escanear con una aplicación de autenticación de dos factores en su teléfono.
Google Authenticator es una aplicación 2FA popular, pero recomiendo FreeOTP, que es una aplicación 2FA de código abierto desarrollada por Red Hat. Una vez que ingresa el código de autenticación generado por su aplicación 2FA, se habilita la autenticación de dos factores. Si ahora cierra la sesión y vuelve a iniciarla, debe ingresar el código de autenticación además del nombre de usuario y la contraseña.