Hoe phpMyAdmin met Nginx op Debian 12, 11 of 10 te installeren

phpMyAdmin is een veelgebruikte open-sourcetool geschreven in PHP, ontworpen om het beheer van MySQL en MariaDB via internet af te handelen. Het biedt een intuïtieve grafische interface voor het uitvoeren van verschillende databasebewerkingen, zoals het maken, wijzigen en verwijderen van databases, tabellen, velden of rijen, het uitvoeren van SQL-instructies en het beheren van gebruikersrechten. Het installeren van phpMyAdmin op Debian 12, 11 of 10 omvat het handmatig instellen van de LEMP-stack (Linux, NGINX, MySQL/MariaDB, PHP), gevolgd door het downloaden en configureren van de nieuwste build van phpMyAdmin.

Het gebruik van phpMyAdmin vereenvoudigt het databasebeheer, waardoor het zelfs toegankelijk wordt voor gebruikers die zich misschien niet op hun gemak voelen bij het gebruik van de opdrachtregel voor databasebewerkingen. Deze gids leidt u door de stappen om de LEMP-stack handmatig te installeren, phpMyAdmin te configureren en uw installatie te beveiligen.

Installeer LEMP Stack op Debian voor phpMyAdmin

Stap 1: Het Debian-systeem vernieuwen

Begin met het updaten van uw Debian-systeem met de meest recente pakketten voor een veilige en foutloze installatie. Deze proactieve stap is bedoeld om de kans op conflicten tijdens het installatieproces te verkleinen.

sudo apt update && sudo apt upgrade

Als u de kernel of veel pakketten bijwerkt, is opnieuw opstarten noodzakelijk.

Stap 2: Installeer Nginx

Installeer eerst Nginx om een ​​LEMP-stack op te zetten. Voer de volgende opdracht uit:

sudo apt install nginx

Normaal gesproken schakelt het systeem de Nginx-service standaard in na installatie. Controleer echter altijd voorzichtig de status ervan en zorg ervoor dat deze naar verwachting functioneert:

systemctl status nginx

Als de server niet actief is, gebruik dan de volgende opdracht om Nginx in te schakelen en ervoor te zorgen dat deze automatisch start bij elke herstart:

sudo systemctl enable nginx --now

Met deze opdracht installeert u de standaardversie van Nginx.

Opmerking: als u geïnteresseerd bent in het implementeren van de nieuwste stabiele of de hoofdversie van Nginx, kunt u overwegen onze gids te volgen op hoe je Nginx kunt upgraden op Debian 12, 11 of 10 Linux.

Stap 3: Installeer MariaDB

Installeer vervolgens de databasecomponent in de LEMP-stackconfiguratie. Velen kiezen MariaDB boven MySQL vanwege de superieure prestaties en extra functies.

Om MariaDB te installeren, voer je het volgende uit:

sudo apt install mariadb-server mariadb-client

Opmerking: als u een andere versie van MariaDB uit de officiële MariaDB.org-repository's wilt installeren, kunt u onze handleiding over installatie van MariaDB 11.x of 10.x op Debian 12, 11 of 10 Linux.

Bevestig na voltooiing de activering en correcte werking van de MariaDB-service, vergelijkbaar met uw verificatie van Nginx:

systemctl status mariadb

Als MariaDB niet is geactiveerd, gebruikt u de onderstaande opdracht om deze te activeren en ervoor te zorgen dat deze start bij het opnieuw opstarten.

sudo systemctl enable mariadb --now

Om de beveiliging van uw MariaDB te versterken, voert u het meegeleverde beveiligingsscript uit, mysql_secure_installation, tijdens het installatieproces. De standaardinstellingen van een nieuwe MariaDB-installatie laten vaak kwetsbaarheden achter die kwaadwillende actoren kunnen misbruiken.

sudo mysql_secure_installation

Het uitvoeren van het beveiligingsscript leidt u door verschillende stappen om de beveiliging van uw MariaDB te versterken. Deze stappen omvatten het instellen van het root-wachtwoord, het beperken van externe toegang, het verwijderen van anonieme gebruikersaccounts en het verwijderen van de testdatabase.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y <---- Type Y then press the ENTER KEY.
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y <---- Type Y then press the ENTER KEY.
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y <---- Type Y then press the ENTER KEY.
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Stap 4: PHP installeren

Installeer de PHP-service om de installatie van de LEMP-stack te voltooien. PHP dient, via de PHP-FPM-service en aanvullende modules die phpMyAdmin nodig heeft, als brug tussen Nginx en MariaDB.

Let op: Als je een specifieke versie van PHP wilt installeren, raadpleeg dan onze handleiding op het installeren van elke PHP 8.x-versie die beschikbaar is op Debian 12, 11 of 10 Linux.

Om PHP en PHP-FPM, samen met de noodzakelijke modules, op uw Debian-systeem te implementeren, voert u het volgende uit:

sudo apt install php-fpm php-mbstring php-bcmath php-xml php-mysql php-common php-gd php-cli php-curl php-zip php-gd

Bevestig na de PHP-installatie de status van de PHP-service, net zoals je deed voor MariaDB en Nginx.

Voor PHP 8.2, wat bijvoorbeeld de standaard is op Debian Bookworm, zou het specifieke commando zijn:

systemctl status php8.2-fpm

Mocht de PHP-service inactief blijven, gebruik dan de volgende opdracht om deze in te schakelen en ervoor te zorgen dat deze automatisch start bij elke herstart.

sudo systemctl enable php-fpm --now

Voltooi phpMyAdmin met Nginx en Debian

In deze sectie wordt de procedure uitgelegd voor het verkrijgen van het phpMyAdmin-archief en het instellen van de vereiste mappen, machtigingen en database-items.

Stap 1: Maak een supergebruiker aan voor phpMyAdmin

Normaal gesproken heeft u toegang tot phpMyAdmin via de rootgebruiker. Om aan robuuste beveiligingspraktijken te voldoen, moet u echter een aparte superuser maken in plaats van de rootgebruiker te gebruiken. Dit concept sluit aan bij de Linux-praktijk waarbij gebruik wordt gemaakt van een sudo-gebruiker in plaats van rechtstreeks in te loggen als root.

Authenticeer uzelf eerst in de terminalinterface:

sudo mariadb -u root

Na succesvolle authenticatie bestaat de volgende stap uit het creëren van een database binnen de MariaDB-terminal.

CREATE USER PMAUSER IDENTIFIED BY 'password here change';

Maak vervolgens een gebruiker aan en geef deze de vereiste machtigingen, zoals hieronder weergegeven:

GRANT ALL PRIVILEGES ON *.* TO 'PMAUSER'@'localhost' IDENTIFIED BY 'password here change' WITH GRANT OPTION;

Het tijdelijke wachtwoord vervangen “wachtwoord hier wijzigen” met een veilig wachtwoord is cruciaal voordat u de opdrachten uitvoert.

Vergeet niet om bij het vaststellen van de gebruiker en het instellen van machtigingen de rechten voor de wijzigingen te vernieuwen.

FLUSH PRIVILEGES;

Gebruik de volgende opdracht om de MariaDB-terminal af te sluiten.

QUIT;

Stap 2: Download de phpMyAdmin-broncode

Deze sectie werpt licht op hoe u het bronarchief voor phpMyAdmin kunt verkrijgen. Het gebruik van de opdrachtregelterminal biedt een efficiënte methode om de nieuwste versie in alle talen te downloaden.

Om het phpMyAdmin-archief te downloaden, voert u de volgende opdracht uit in de terminal.

DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
URL="$(echo $DATA | cut -d ' ' -f 3)"
VERSION="$(echo $DATA | cut -d ' ' -f 1)"
wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.gz

Als je de Engelstalige versie van phpMyAdmin wenst, vervang dan de laatste regel van het vorige commando door het volgende:

wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-english.tar.gz

Na het downloaden is de volgende stap het uitpakken van het phpMyAdmin-archief door de onderstaande opdracht uit te voeren:

tar xvf phpMyAdmin-${VERSION}-all-languages.tar.gz

Stap 3: Configureer phpMyAdmin

De volgende fase omvat het migreren van alle uitgepakte bestanden naar hun eindbestemming in de map /var/www/ met behulp van de opdracht mv.

sudo mv phpMyAdmin-*/ /var/www/phpmyadmin

Wanneer u phpMyAdmin vanaf de bron installeert, zult u merken dat er standaard geen TMP-map bestaat. Daarom zou het het beste zijn als u deze map handmatig aanmaakt.

sudo mkdir /var/www/phpmyadmin/tmp

De phpMyAdmin-map bevat een standaardconfiguratievoorbeeldbestand, waarvan u de naam moet wijzigen zodat phpMyAdmin het kan herkennen. Gebruik de opdracht CP om een ​​kopie van het standaardbestand in de map /var/www/phpmyadmin/ te maken, zodat u verzekerd bent van een back-up.

Om config.sample.inc.php naar config.inc.php te repliceren, voert u de volgende opdracht uit:

sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php

Nadat u het bestand hebt gekopieerd, opent u het met een gewenste teksteditor. In dit voorbeeld gebruiken we de nano-teksteditor:

sudo nano /var/www/phpmyadmin/config.inc.php

phpMyAdmin maakt gebruik van een Blowfish-cijfer. Om deze instelling te wijzigen, navigeert u naar de regel die begint met $cfg['blowfish_secret'].

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Wijs een reeks van 32 willekeurige tekens toe binnen de enkele aanhalingstekens. Gebruik het pwgen-programma als een handige methode om deze string te genereren. Voer de volgende terminalopdracht uit om pwgen te installeren:

Hierdoor blijven alle acties duidelijk en direct toegeschreven aan de gebruiker (of degene die de actie uitvoert).

sudo apt install pwgen 

Voer na de installatie het onderstaande commando uit:

pwgen -s 32 1

Deze opdracht genereert een reeks van 32 willekeurige tekens die als kogelvisgeheim dienen.

Voorbeeld van het invoegen van het cijfer in het configuratiebestand (Niet kopieren):

UvqAlsvTxRdYIyO8TnlkJsVQaWs2LfgL

Voorbeeld in het configuratiebestand:

Voor de meeste gebruikers zouden de resterende standaardinstellingen voldoende moeten zijn. Als uw server zich echter op een andere server binnen uw netwerk bevindt, moet u de regel $cfg['Servers'][$i]['host'] lokaliseren en aanpassen om het privé-IP-adres weer te geven. Een illustratie van deze wijziging wordt hieronder weergegeven:

$cfg['Servers'][$i]['host'] = '192.168.55.101';

Stap 4: Configureer de bestandsrechten van phpMyAdmin

Het toewijzen van machtigingen aan de directory-eigenaar aan www-user is cruciaal voor het garanderen van compatibiliteit en veiligheid.

Om de chown-toestemming in te stellen:

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

Om de chmod-toestemming in te stellen:

sudo find /var/www/phpmyadmin/ -type d -exec chmod 755 {} \;
sudo find /var/www/phpmyadmin/ -type f -exec chmod 644 {} \;

In de volgende sectie bespreken we het maken en instellen van het Nginx-serviceblok voor uw phpMyAdmin-service.

Een NGINX-serverblok instellen voor phpMyAdmin

Om toegang te krijgen tot de phpMyAdmin-webinterface, maakt u als essentiële stap een NGINX-serverblok aan. Creëer een apart subdomein om de beveiligingsmaatregelen te versterken en brute-force-aanvallen af ​​te weren, wat ten zeerste wordt aanbevolen. Voel je vrij om dit subdomein een naam te geven die je geschikt vindt.

Stap 1: Maak een Nginx-serverblok voor phpMyAdmin op Debian

Laten we beginnen met het maken en openen van uw serverblok met de nano-teksteditor. Voer de volgende opdracht uit:

sudo nano /etc/nginx/sites-available/phpmyadmin.conf

Stap 2: Configureer Nginx-serverblok

Nadat u het serverblokbestand met succes hebt geopend, kopieert en plakt u de volgende tekst in het bestand. Zorg ervoor dat u de domein-URL vervangt door uw eigen URL:

server {
  listen 80;
  listen [::]:80;
  server_name pma.example.com;
  root /var/www/phpmyadmin/;
  index index.php index.html index.htm index.nginx-debian.html;

  access_log /var/log/nginx/phpmyadmin_access.log;
  error_log /var/log/nginx/phpmyadmin_error.log;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ ^/(doc|sql|setup)/ {
    deny all;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /\.ht {
    deny all;
  }
}

Hier zijn enkele kritische punten om op te merken over het bovenstaande voorbeeld:

  • /run/php/php8.2-fpm.sock; – Dit pad moet de gebruikte versie van PHP-FPM weerspiegelen. Het kan bijvoorbeeld 8.3, 8.1, 8.0, 7.4, enz. zijn.
  • root /var/www/phpmyadmin/; – Dit verwijst naar het pad dat in deze handleiding is gedefinieerd. Als uw phpMyAdmin zich ergens anders bevindt, zorg er dan voor dat u deze regel dienovereenkomstig bijwerkt.

Als u de enige persoon bent die toegang heeft tot de server vanaf een statisch IP-adres, kunt u overwegen de volgende code toe te voegen boven de eerste locatie-invoer:

  allow <your ip address>;
  deny all; 

  location / {
    try_files $uri $uri/ /index.php;
  }

De bovenstaande code blokkeert effectief ongeautoriseerde bezoekers van de pagina met een 403-fout, waardoor uitsluitend toegang wordt verleend tot uw IP-adres. Het is een substantiële verdediging tegen aanvallen met brute kracht, hoewel het misschien niet voor alle opstellingen geschikt is.

Stap 3: De teksteditor opslaan en afsluiten

Om uw wijzigingen op te slaan, drukt u op (CTRL+O) en om de editor af te sluiten, drukt u op (CTRL+X).

Stap 4: Een symbolische link naar het configuratiebestand maken

Maak vervolgens een symbolische link van de voor sites beschikbare map naar de voor sites geschikte map waar het configuratiebestand zich bevindt:

sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/

Stap 5: Een drooglooptest uitvoeren

Een dry run-test is van cruciaal belang voordat u de NGINX-service opnieuw start. Deze maatregel is essentieel in live-omgevingen en zorgt ervoor dat eventuele wijzigingen aan uw configuratiebestanden geen NGINX-fouten veroorzaken:

sudo nginx -t

Als uw configuratie foutloos is, wordt u begroet door de volgende uitvoer:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Stap 6: Uw NGINX-service opnieuw opstarten

Om de wijzigingen effectief te maken, start u ten slotte uw NGINX-service opnieuw op:

sudo systemctl restart nginx

Daarmee is dit gedeelte over het maken van een NGINX-serverblok voor phpMyAdmin afgerond. In het volgende gedeelte opent u de phpMyAdmin-webinterface en logt u in.

Navigeren door de phpMyAdmin-webinterface

Begin uw interactie met de interface van phpMyAdmin door uw favoriete webbrowser te starten. Voer pma.example.com in de adresbalk in en zorg ervoor dat u 'example' vervangt door uw domeinnaam of server-IP-adres. Vergeet niet dat u localhost ook in interne omgevingen kunt gebruiken.

Nadat u dit heeft gedaan, komt u terecht op het inlogscherm van phpMyAdmin, zoals weergegeven in de volgende afbeelding:

Navigeer door het inlogscherm door uw gegevens in te voeren en 'doorgaan' of 'inloggen' te selecteren. Met deze actie krijgt u toegang tot het phpMyAdmin-dashboard, dat wordt weergegeven in de volgende afbeelding.

Als u voor het eerst phpMyAdmin gebruikt, wilt u wellicht kennismaken met de ‘statuspagina’. Het biedt uitgebreid inzicht in de status en gezondheid van uw database.

Naast de statistiekenpagina bevat phpMyAdmin ook een ‘adviseursysteem’. Deze handige functie biedt suggesties voor prestatieverbeteringen.

Het is echter verstandig om te onthouden dat hoewel de adviseur aanbeveelt om 24 uur te wachten, de meesten een minimum van 72 uur als optimaal beschouwen. Dit zorgt ervoor dat de databasebemonstering over een langere periode plaatsvindt, wat nauwkeurigere aanbevelingen oplevert.

Bovendien mag het adviseurssysteem niet uw enige basis voor veranderingen zijn. Het wijzigen van uw MySQL- of MariaDB-configuratiebestanden vereist zorgvuldige overweging, grondige tests en mogelijk meerdere iteraties. Het doel is om de configuraties te optimaliseren voor de beste resultaten, en dit kost vaak tijd.

Beveilig phpMyAdmin via Let's Encrypt SSL-certificaat

Maak een SSL-certificaat via Certbot

Om de beveiliging van uw phpMyAdmin-instantie te verbeteren, voert u Nginx uit via HTTPS met behulp van een SSL-certificaat. Het gebruik van Let's Encrypt, een gerenommeerde certificeringsinstantie die gratis, geautomatiseerde en open SSL-certificaten aanbiedt, biedt de meest eenvoudige methode.

Installeer eerst het certbot-pakket, dat helpt bij het beheren van Let's Encrypt SSL-certificaten, door het volgende uit te voeren:

sudo apt install python3-certbot-nginx -y

Nadat u de installatie van het certbot-pakket hebt voltooid, maakt u uw SSL-certificaat aan door het volgende uit te voeren:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d pma.example.com

Bij het starten van het certificaatinstallatieproces:

  • Er verschijnt een prompt met informatie over het ontvangen van e-mails van EFF (Electronic Frontier Foundation).
  • Of u het er nu mee eens (Y) of oneens (N) bent, het systeem zal uw TLS-certificaat automatisch installeren en configureren.
  • De configuratie omvat het afdwingen van HTTPS 301-omleidingen, het toevoegen van een Strict-Transport-Security-header en het implementeren van OCSP Stapling.
  • Vergeet niet om het e-mailadres en de domeinnaam in de opdracht te vervangen door uw exacte gegevens.

Nadat u deze configuratie hebt voltooid, migreert uw URL van HTTP://pma.example.com naar HTTPS://pma.example.com, waarbij toegang tot de vorige HTTP-URL automatisch wordt omgeleid naar de beveiligde HTTPS-URL.

Maak een cronjob voor SSL-verlenging

Creëer een cronjob die uw certificaten automatisch vernieuwt om het proces verder te stroomlijnen. Certbot biedt hiervoor een automatisch verlengingsscript. Voordat u deze taak instelt, voert u verstandig een drooglooptest uit om te bevestigen dat alles correct werkt met behulp van de volgende opdracht:

sudo certbot renew --dry-run

Om de automatische verlenging te plannen, opent u het crontabbestand door het volgende uit te voeren:

sudo crontab -e

Controleer regelmatig of uw certificaat wordt vernieuwd (minstens één keer per dag) om er zeker van te zijn dat uw certificaat geldig blijft. Als verlenging nodig is, zal het script het certificaat automatisch bijwerken. Gebruik de cron-syntaxis om de verlenging op het door u gewenste tijdstip in te stellen.

00 00 */1 * * /usr/sbin/certbot-auto renew

Conclusie

Als phpMyAdmin succesvol is geïnstalleerd en geconfigureerd op uw Debian-systeem, kunt u uw MySQL- of MariaDB-databases efficiënt beheren via een gebruiksvriendelijke webinterface. Regelmatige updates en beveiligingsconfiguraties zorgen ervoor dat uw databasebeheertool veilig en up-to-date blijft. Geniet van het gemak en de krachtige functies die phpMyAdmin biedt voor het beheer van uw databases op Debian.

Joshua James
Volg mij
Laatste berichten van Joshua James (alles zien)

Plaats een reactie