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:

Inicio de sesión de 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:

phpMyAdmin

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:

Inicio de sesión seguro

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.

También te podría gustar...