Ricerca nel sito web

Come installare e proteggere phpMyAdmin su Debian 11


Su questa pagina

  1. Prerequisiti
  2. Per iniziare
  3. Installa il server LAMP
  4. Installa e configura phpMyAdmin
  5. Crea utente amministratore phpMyAdmin
  6. Configura Apache per phpMyAdmin
  7. Accedi a phpMyAdmin
  8. Proteggi phpMyAdmin
  9. Verifica phpMyAdmin
  10. Conclusione

phpMyAdmin è un'applicazione gratuita, open source e basata sul Web utilizzata per la gestione dei database MySQL e MariaDB dall'interfaccia Web. La creazione e la gestione di un database dall'interfaccia della riga di comando è molto difficile per gli utenti principianti. phpMyAdmin fornisce un modo più semplice per gestire database MySQL, account utente e privilegi, eseguire istruzioni SQL, importare ed esportare dati tramite il browser web.

In questo post, ti mostreremo come installare e proteggere lo strumento di amministrazione del database phpMyAdmin su Debian 11.

Prerequisiti

  • Un server che esegue Debian 11.
  • Sul server è configurata una password di root.

Iniziare

Prima di iniziare, è una buona idea aggiornare i pacchetti di sistema all'ultima versione. Puoi aggiornare tutti i pacchetti usando il seguente comando:

apt-get update -y

Una volta aggiornato il sistema, puoi procedere al passaggio successivo.

Installa LAMP Server

phpMyAdmin è un'applicazione basata su PHP e gira su un server web. Quindi dovrai installare il server LAMP sul tuo server. Puoi installarlo usando il seguente 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

Installa e configura phpMyAdmin

Innanzitutto, scarica l'ultima versione di phpMyAdmin dal loro sito Web ufficiale utilizzando il seguente comando:

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

Una volta completato il download, decomprimere il file scaricato con il seguente comando:

unzip phpMyAdmin-5.1.1-all-languages.zip

Successivamente, sposta la directory estratta in /usr/share con il seguente comando:

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

Successivamente, crea la directory richiesta con il seguente comando:

mkdir -p /var/lib/phpmyadmin/tmp

Quindi, imposta la proprietà corretta sulla directory phpMyAdmin:

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

Successivamente, copia il file di configurazione di esempio phpMyAdmin:

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

Successivamente, installa pwgen e genera una chiave segreta con il seguente comando:

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

Produzione:

pau9t1SG6lmaeCFxKqeeaY5N4erIa25K

Successivamente, modifica il file config.inc.php e configuralo:

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

Definisci la tua chiave segreta e decommenta le seguenti righe:

$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';

Salva e chiudi il file quando hai finito.

Crea un utente amministratore phpMyAdmin

Si consiglia sempre di creare un utente separato per la gestione del database tramite phpMyAdmin.

Innanzitutto, importa le tabelle phpMyAdmin nel database MariaDB utilizzando il seguente comando:

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

Successivamente, connettiti alla shell MariaDB con il seguente comando:

mysql

Una volta connesso, concedi tutti i privilegi necessari al database phpmyadmin con il seguente comando:

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';

Quindi, crea un utente amministratore con il seguente comando:

MariaDB [(none)]> CREATE USER myadmin;

Successivamente, concedi tutti i privilegi all'utente admin con il seguente comando:

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

Quindi, svuota i privilegi ed esci dalla shell MariaDB usando il seguente comando:

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

Una volta terminato, puoi procedere al passaggio successivo.

Configura Apache per phpMyAdmin

Successivamente, dovrai creare un file di configurazione dell'host virtuale Apache per phpMyAdmin. Puoi crearlo usando il seguente comando:

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

Aggiungi le seguenti righe:

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>

Salva e chiudi il file quando hai finito, quindi abilita il file di configurazione phpMyAdmin con il seguente comando:

a2enconf phpmyadmin.conf

Successivamente, ricarica il servizio Apache per applicare le modifiche:

systemctl reload apache2

Puoi controllare lo stato del servizio Apache usando il seguente comando:

systemctl status apache2

Dovresti vedere il seguente output:

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

Accedi a phpMyAdmin

A questo punto, phpMyAdmin è installato e configurato. Ora apri il tuo browser web e accedi a phpMyAdmin usando l'URL http://your-server-ip/phpmyadmin. Dovresti vedere la pagina di accesso di phpMyAdmin:

Fornisci il nome utente e la password dell'amministratore e fai clic sul pulsante Vai . Dovresti vedere la dashboard di phpMyAdmin nella pagina seguente:

Sicuro phpMyAdmin

È una buona idea proteggere phpMyAdmin con l'autenticazione a due fattori. Puoi farlo utilizzando le funzionalità di autenticazione e autorizzazione di .htaccess.

Per prima cosa, modifica il file di configurazione di phpMyAdmin:

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

Aggiungi la riga AllowOverride All nel seguente blocco server:

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

    <IfModule mod_php5.c>

Salva e chiudi il file quando hai finito, quindi riavvia il servizio Apache:

systemctl restart apache2

Successivamente, crea un file .htaccess e definisci il tipo di autenticazione Apache:

nano /usr/share/phpmyadmin/.htaccess

Aggiungi le seguenti righe:

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

Salva e chiudi il file quindi crea un utente con il seguente comando:

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

Ti verrà chiesto di impostare una password come mostrato di seguito:

New password: 
Re-type new password: 
Adding password for user secureuser

Verifica phpMyAdmin

A questo punto, phpMyAdmin è protetto con un'ulteriore autenticazione. Per verificarlo, apri il tuo browser web e accedi a phpMyAdmin utilizzando l'URL http://your-server-ip/phpmyadmin. Ti verrà chiesto il nome utente e la password aggiuntivi come mostrato di seguito:

Dopo aver fornito nome utente e password, verrai reindirizzato alla normale pagina di accesso di phpMyAdmin.

Conclusione

Congratulazioni! hai installato e protetto con successo phpMyAdmin su Debian 11. Ora puoi esplorare phpMyAdmin e iniziare a gestire il tuo database dal browser web.