Cómo instalar y asegurar phpMyAdmin en Debian 11

Iniciar sesión en phpMyAdmin

phpMyAdmin es una aplicación gratuita, de código abierto y basada en web que se utiliza para administrar bases de datos MySQL y MariaDB desde la interfaz web. Crear y administrar una base de datos desde la interfaz de línea de comandos es muy difícil para los usuarios principiantes. phpMyAdmin proporciona una manera más fácil de administrar bases de datos MySQL, cuentas de usuario y privilegios, ejecutar declaraciones SQL, importar y exportar datos a través del navegador web.

En esta publicación, le mostraremos cómo instalar y asegurar la herramienta de administración de bases de datos phpMyAdmin en Debian 11.

requisitos previos

  • Un servidor que ejecuta Debian 11.
  • Una contrase√Īa de root est√° configurada en el servidor.

Empezando

Antes de comenzar, es una buena idea actualizar los paquetes de su sistema a la √ļltima versi√≥n. Puede actualizar todos los paquetes usando el siguiente comando:

apt-get update -y

Una vez que su sistema esté actualizado, puede continuar con el siguiente paso.

Instalar servidor LAMP

phpMyAdmin es una aplicación basada en PHP y se ejecuta en un servidor web. Por lo tanto, deberá instalar el servidor LAMP en su servidor. Puedes instalarlo usando 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 que todos los paquetes estén instalados, puede continuar con el siguiente paso.

Instalar y configurar phpMyAdmin

Primero, descargue la √ļltima versi√≥n de phpMyAdmin desde su sitio web oficial usando el siguiente comando:

wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip

Una vez completada la descarga, descomprima el archivo descargado con el siguiente comando:

unzip phpMyAdmin-5.1.1-all-languages.zip

A continuación, mueva el directorio extraído a /usr/share con el siguiente comando:

mv phpMyAdmin-5.1.1-all-languages /usr/share/phpmyadmin

A continuación, cree el directorio requerido con el siguiente comando:

mkdir -p /var/lib/phpmyadmin/tmp

A continuación, establezca la propiedad adecuada en el directorio phpMyAdmin:

chown -R www-data:www-data /var/lib/phpmyadmin

A continuación, copie el archivo de configuración de muestra de phpMyAdmin:

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

A continuación, instale pwgen y genere una clave secreta con el siguiente comando:

apt-get install pwgen -y
pwgen -s 32 1

Producción:

pau9t1SG6lmaeCFxKqeeaY5N4erIa25K

A continuaci√≥n, edite el archivo config.inc.php y config√ļrelo:

nano /usr/share/phpmyadmin/config.inc.php

Defina su clave secreta y descomente 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';

Guarde y cierre el archivo cuando haya terminado.

Crear usuario administrador de phpMyAdmin

Siempre se recomienda crear un usuario separado para administrar la base de datos a través de phpMyAdmin.

Primero, importe las tablas de phpMyAdmin a la base de datos MariaDB usando el siguiente comando:

mysql < /usr/share/phpmyadmin/sql/create_tables.sql

A continuación, conéctese al shell de MariaDB con el siguiente comando:

mysql

Una vez que esté conectado, otorgue 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, cree un usuario administrador con el siguiente comando:

MariaDB [(none)]> CREATE USER myadmin;

A continuación, otorgue todos los privilegios al usuario administrador con el siguiente comando:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

A continuación, elimine los privilegios y salga del shell de MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Una vez que haya terminado, puede continuar con el siguiente paso.

Configurar Apache para phpMyAdmin

A continuación, deberá crear un archivo de configuración de host virtual de Apache para phpMyAdmin. Puedes crearlo usando el siguiente comando:

nano /etc/apache2/conf-available/phpmyadmin.conf

Agregue 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>

Guarde y cierre el archivo cuando haya terminado, luego habilite el archivo de configuración de phpMyAdmin con el siguiente comando:

a2enconf phpmyadmin.conf

A continuación, vuelva a cargar el servicio de Apache para aplicar los cambios:

systemctl reload apache2

Puede verificar el estado del servicio Apache usando el siguiente comando:

systemctl status apache2

Debería ver el siguiente resultado:

? 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...

Acceder a phpMyAdmin

En este punto, phpMyAdmin está instalado y configurado. Ahora, abra su navegador web y acceda a phpMyAdmin usando la URL http://su-servidor-ip/phpmyadmin. Debería ver la página de inicio de sesión de phpMyAdmin:

Iniciar sesión en phpMyAdmin

Proporcione su nombre de usuario y contrase√Īa de administrador y haga clic en el Vamos bot√≥n. Deber√≠a ver el panel de phpMyAdmin en la siguiente p√°gina:

phpMyAdmin

phpMyAdmin seguro

Es una buena idea asegurar phpMyAdmin con autenticación de dos factores. Puede hacerlo utilizando las funcionalidades de autenticación y autorización .htaccess.

Primero, edite el archivo de configuración de phpMyAdmin:

nano /etc/apache2/conf-available/phpmyadmin.conf

Agregue la l√≠nea ¬ęAllowOverride All¬Ľ en el siguiente bloque de servidor:

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All

    <IfModule mod_php5.c>

Guarde y cierre el archivo cuando haya terminado y luego reinicie el servicio Apache:

systemctl restart apache2

A continuación, cree un archivo .htaccess y defina el tipo de autenticación de Apache:

nano /usr/share/phpmyadmin/.htaccess

Agregue las siguientes líneas:

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/share/phpmyadmin/.htpasswd
Require valid-user

Guarde y cierre el archivo y luego cree un usuario con el siguiente comando:

htpasswd -c /usr/share/phpmyadmin/.htpasswd secureuser

Se le pedir√° que establezca 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√° protegido con autenticaci√≥n adicional. Para verificarlo, abra su navegador web y acceda a phpMyAdmin usando la URL http://su-servidor-ip/phpmyadmin. Se le 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 su nombre de usuario y contrase√Īa, ser√° redirigido a la p√°gina de inicio de sesi√≥n normal de phpMyAdmin.

Conclusión

¡Felicidades! Ha instalado y asegurado con éxito phpMyAdmin en Debian 11. Ahora puede explorar phpMyAdmin y comenzar a administrar su base de datos desde el navegador web.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *