phpMyAdmin installeren en beveiligen op Debian 11

phpMyAdmin is een gratis, open-source, en web-gebaseerde toepassing die gebruikt wordt om MySQL en MariaDB databases te beheren vanuit de webinterface. Het maken en beheren van een database vanaf de command-line interface is erg moeilijk voor beginnende gebruikers. phpMyAdmin biedt een eenvoudiger manier om MySQL databases, gebruikersaccounts en rechten te beheren, SQL verklaringen uit te voeren, gegevens te importeren en te exporteren via de web browser.

In dit artikel laten we je zien hoe je het databankbeheerprogramma phpMyAdmin op Debian 11 kunt installeren en beveiligen.

Vereisten

  • Een server waarop Debian 11 draait.
  • Een root wachtwoord is op de server ingesteld.

Aan de slag

Alvorens te beginnen is het een goed idee om je systeempakketten bij te werken naar de laatste versie. Je kunt alle pakketten bijwerken met het volgende commando:

apt-get update -y

Als je systeem bijgewerkt is, kun je verder gaan met de volgende stap.

Installeer een LAMP server

phpMyAdmin is een op PHP gebaseerde toepassing en draait op een webserver. Je zult dus de LAMP server op je server moeten installeren. Je kunt het installeren met het volgende commando:

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

Als alle pakketten geïnstalleerd zijn, kun je verder gaan met de volgende stap.

Installeer en configureer phpMyAdmin

Download eerst de nieuwste versie van phpMyAdmin van hun officiële website met het volgende commando:

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

Zodra de download voltooid is, pak je het gedownloade bestand uit met het volgende commando:

unzip phpMyAdmin-5.1.1-all-languages.zip

Verplaats vervolgens de uitgepakte map naar de /usr/share met het volgende commando:

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

Maak vervolgens de vereiste directory aan met het volgende commando:

mkdir -p /var/lib/phpmyadmin/tmp

Stel vervolgens het juiste eigendom in op de phpMyAdmin map:

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

Kopieer vervolgens het phpMyAdmin voorbeeld configuratiebestand:

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

Installeer vervolgens pwgen en genereer een secrete sleutel met het volgende commando:

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

Uitvoer:

pau9t1SG6lmaeCFxKqeeaY5N4erIa25K

Bewerk vervolgens het config.inc.php bestand en configureer het:

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

Definieer je secrete sleutel en maak de volgende regels oncommentaar:

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

Sla het bestand op en sluit het als je klaar bent.

Maak een phpMyAdmin Admin gebruiker aan

Het is altijd aan te bevelen een aparte gebruiker aan te maken voor het beheer van de database via phpMyAdmin.

Importeer eerst de phpMyAdmin tabellen naar de MariaDB databank met het volgende commando:

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

Maak vervolgens verbinding met de MariaDB shell met het volgende commando:

mysql

Zodra je verbonden bent, verleen je de nodige rechten aan de phpmyadmin databank met het volgende commando:

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

Maak vervolgens een admin gebruiker aan met het volgende commando:

MariaDB [(none)]> CREATE USER myadmin;

Verleen vervolgens alle rechten aan de admin gebruiker met het volgende commando:

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

Spoel vervolgens de privileges door en verlaat de MariaDB shell met het volgende commando:

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

Als je klaar bent, kun je verder gaan met de volgende stap.

Configureer Apache voor phpMyAdmin

Vervolgens moet je een Apache virtual host configuratiebestand maken voor phpMyAdmin. Je kunt het maken met het volgende commando:

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

Voeg de volgende regels toe:

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>

Bewaar en sluit het bestand als je klaar bent en schakel dan het phpMyAdmin configuratiebestand in met het volgende commando:

a2enconf phpmyadmin.conf

Herlaad vervolgens de Apache dienst om de veranderingen toe te passen:

systemctl reload apache2

Je kunt de status van de Apache dienst controleren met het volgende commando:

systemctl status apache2

Je zou de volgende uitvoer moeten zien:

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

Toegang tot phpMyAdmin

Op dit punt is phpMyAdmin geïnstalleerd en geconfigureerd. Open nu je webbrowser en benader phpMyAdmin met de URL http://your-server-ip/phpmyadmin. Je zou de phpMyAdmin login pagina moeten zien:

phpMyAdmin Inloggen

Geef je admin gebruikersnaam en wachtwoord op en klik op deGo knop. Je zou het phpMyAdmin dashboard moeten zien op de volgende pagina:

phpMyAdmin

Beveilig phpMyAdmin

Het is een goed idee om phpMyAdmin te beveiligen met twee-factor authenticatie. Je kunt dit doen met de .htaccess authenticatie en autorisatie functionaliteiten.

Bewerk eerst het phpMyAdmin configuratiebestand:

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

Voeg de regel “AllowOverride All” toe in het volgende serverblok:

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

    <IfModule mod_php5.c>

Bewaar en sluit het bestand als je klaar bent en herstart dan de Apache dienst:

systemctl restart apache2

Maak vervolgens een .htaccess bestand en bepaal het Apache authenticatietype:

nano /usr/share/phpmyadmin/.htaccess

Voeg de volgende regels toe:

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

Bewaar en sluit het bestand en maak dan een gebruiker aan met het volgende commando:

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

Je wordt gevraagd een wachtwoord in te stellen zoals hieronder:

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

Verifieer phpMyAdmin

Op dit punt is phpMyAdmin beveiligd met extra authenticatie. Om dit te verifiëren open je je webbrowser en ga je naar phpMyAdmin met de URL http://your-server-ip/phpmyadmin. Je wordt om de extra gebruikersnaam en wachtwoord gevraagd zoals hieronder:

Veilig inloggen

Na het opgeven van je gebruikersnaam en wachtwoord word je doorgestuurd naar de gewone phpMyAdmin login pagina.

Conclusie

Gefeliciteerd! Je hebt phpMyAdmin met succes geïnstalleerd en beveiligd op Debian 11. Je kunt nu phpMyAdmin verkennen en beginnen met het beheren van je database vanuit de web browser.