Cómo instalar y asegurar phpMyAdmin en Debian 11
phpMyAdmin es una aplicación gratuita, de código abierto y basada en la web que se utiliza para gestionar bases de datos MySQL y MariaDB desde la interfaz web. Crear y gestionar una base de datos desde la interfaz de línea de comandos es muy difícil para los usuarios principiantes. phpMyAdmin proporciona una forma más fácil de gestionar las bases de datos MySQL, las cuentas de usuario y los privilegios, ejecutar sentencias SQL, importar y exportar datos a través del navegador web.
En este post, te mostraremos cómo instalar y asegurar la herramienta de administración de bases de datos phpMyAdmin en Debian 11.
Requisitos previos
- Un servidor que ejecute Debian 11.
- Una contraseña de root configurada en el servidor.
Cómo empezar
Antes de empezar, es una buena idea actualizar los paquetes de tu sistema a la última versión. Puedes actualizar todos los paquetes con el siguiente comando:
apt-get update -y
Una vez que tu sistema esté actualizado, puedes pasar al siguiente paso.
Instalar el servidor LAMP
phpMyAdmin es una aplicación basada en PHP y se ejecuta en un servidor web. Así que tendrás que instalar el servidor LAMP en tu servidor. Puedes instalarlo con el siguiente comando:
apt-get install apache2 mariadb-server libapache2-mod-php php-cli php-mysql php-zip php-curl php-xml php-mbstring php-zip php-gd unzip -y
Una vez instalados todos los paquetes, puedes pasar al siguiente paso.
Instalar y configurar phpMyAdmin
En primer lugar, descarga la última versión de phpMyAdmin desde su sitio web oficial utilizando el siguiente comando:
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip
Una vez completada la descarga, descomprime el archivo descargado con el siguiente comando:
unzip phpMyAdmin-5.1.1-all-languages.zip
A continuación, mueve el directorio extraído a /usr/share con el siguiente comando:
mv phpMyAdmin-5.1.1-all-languages /usr/share/phpmyadmin
A continuación, crea el directorio necesario con el siguiente comando:
mkdir -p /var/lib/phpmyadmin/tmp
A continuación, establece la propiedad adecuada del directorio phpMyAdmin:
chown -R www-data:www-data /var/lib/phpmyadmin
A continuación, copia el archivo de configuración de ejemplo de phpMyAdmin:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
A continuación, instala el pwgen y genera una clave secreta con el siguiente comando:
apt-get install pwgen -y
pwgen -s 32 1
Salida:
pau9t1SG6lmaeCFxKqeeaY5N4erIa25K
A continuación, edita el archivo config.inc.php y configúralo:
nano /usr/share/phpmyadmin/config.inc.php
Define tu clave secreta y descomenta las siguientes líneas:
$cfg['blowfish_secret'] = 'pau9t1SG6lmaeCFxKqeeaY5N4erIa25K'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'password'; $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Guarda y cierra el archivo cuando hayas terminado.
Crear un usuario administrador de phpMyAdmin
Siempre se recomienda crear un usuario independiente para gestionar la base de datos a través de phpMyAdmin.
En primer lugar, importa las tablas de phpMyAdmin a la base de datos MariaDB mediante el siguiente comando:
mysql < /usr/share/phpmyadmin/sql/create_tables.sql
A continuación, conéctate al shell de MariaDB con el siguiente comando:
mysql
Una vez conectado, concede todos los privilegios necesarios a la base de datos phpmyadmin con el siguiente comando
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';
A continuación, crea un usuario administrador con el siguiente comando:
MariaDB [(none)]> CREATE USER myadmin;
A continuación, concede todos los privilegios al usuario admin con el siguiente comando:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
A continuación, vacía los privilegios y sal del shell de MariaDB con el siguiente comando
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar Apache para phpMyAdmin
A continuación, tendrás que crear un archivo de configuración del host virtual de Apache para phpMyAdmin. Puedes crearlo con el siguiente comando:
nano /etc/apache2/conf-available/phpmyadmin.conf
Añade las siguientes líneas:
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> # 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/phpmyadmin/htpasswd.setup </IfModule> Require valid-user </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>
Guarda y cierra el archivo cuando hayas terminado y luego habilita el archivo de configuración de phpMyAdmin con el siguiente comando:
a2enconf phpmyadmin.conf
A continuación, recarga el servicio Apache para aplicar los cambios:
systemctl reload apache2
Puedes comprobar el estado del servicio Apache con el siguiente comando:
systemctl status apache2
Deberías ver la siguiente salida:
? apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-08-17 10:16:28 UTC; 2s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 45027 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 45031 (apache2) Tasks: 6 (limit: 2341) Memory: 14.6M CPU: 89ms CGroup: /system.slice/apache2.service ??45031 /usr/sbin/apache2 -k start ??45032 /usr/sbin/apache2 -k start ??45033 /usr/sbin/apache2 -k start ??45034 /usr/sbin/apache2 -k start ??45035 /usr/sbin/apache2 -k start ??45036 /usr/sbin/apache2 -k start Aug 17 10:16:28 debian systemd[1]: Starting The Apache HTTP Server...
Accede a phpMyAdmin
En este punto, phpMyAdmin está instalado y configurado. Ahora, abre tu navegador web y accede a phpMyAdmin utilizando la URL http://your-server-ip/phpmyadmin. Deberías ver la página de acceso a phpMyAdmin:
Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botónIr. Deberías ver el panel de control de phpMyAdmin en la siguiente página:
Asegurar phpMyAdmin
Es una buena idea asegurar el phpMyAdmin con una autenticación de dos factores. Puedes hacerlo utilizando las funcionalidades de autenticación y autorización del .htaccess.
Primero, edita el archivo de configuración de phpMyAdmin:
nano /etc/apache2/conf-available/phpmyadmin.conf
Añade la línea «AllowOverride All» en el siguiente bloque del servidor:
<Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All <IfModule mod_php5.c>
Guarda y cierra el archivo cuando hayas terminado y reinicia el servicio Apache:
systemctl restart apache2
A continuación, crea un archivo .htaccess y define el tipo de autenticación de Apache:
nano /usr/share/phpmyadmin/.htaccess
Añade las siguientes líneas:
AuthType Basic AuthName "Restricted Files" AuthUserFile /usr/share/phpmyadmin/.htpasswd Require valid-user
Guarda y cierra el archivo y luego crea un usuario con el siguiente comando:
htpasswd -c /usr/share/phpmyadmin/.htpasswd secureuser
Se te pedirá que establezcas una contraseña como se muestra a continuación:
New password: Re-type new password: Adding password for user secureuser
Verificar phpMyAdmin
En este punto, phpMyAdmin está asegurado con una autenticación adicional. Para verificarlo, abre tu navegador web y accede a phpMyAdmin utilizando la URL http://your-server-ip/phpmyadmin. Se te pedirá el nombre de usuario y la contraseña adicionales, como se muestra a continuación:
Después de proporcionar tu nombre de usuario y contraseña, serás redirigido a la página de acceso normal de phpMyAdmin.
Conclusión
Enhorabuena! has instalado y asegurado con éxito phpMyAdmin en Debian 11. Ahora puedes explorar phpMyAdmin y empezar a gestionar tu base de datos desde el navegador web.