Komplett guide: MySQL + Nginx + phpMyAdmin på Debian (2025)

Komplett guide: MySQL + Nginx + phpMyAdmin på Debian (2025)

Denne guiden viser hvordan du setter opp en MySQL-database på en Debian-server, konfigurerer Nginx som webserver, og installerer phpMyAdmin slik at du kan administrere databasen via nettleser. Vi inkluderer ekstra sikkerhet slik at ikke hvem som helst kan få tilgang til phpMyAdmin.

Steg 1 → Oppdater systemet

bash
sudo apt update && sudo apt upgrade -y

Steg 2 → Installer MySQL-server

bash
sudo apt install mysql-server -y

Sjekk at tjenesten kjører:

bash
sudo systemctl status mysql

Steg 3 → Sikre MySQL

Kjør sikkerhetsoppsettet:

bash
sudo mysql_secure_installation
  • Sett sterkt root-passord
  • Fjern anonyme brukere
  • Deaktiver ekstern root-tilgang
  • Fjern test-database

Steg 4 → Opprett database og bruker

bash
sudo mysql -u root -p
sql
CREATE DATABASE testdb;
CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'SterktPassord123!';
GRANT ALL PRIVILEGES ON testdb.* TO 'webuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Steg 5 → Installer Nginx og PHP

bash
sudo apt install nginx php-fpm php-mysql -y
sudo systemctl enable nginx
sudo systemctl start nginx

Test i nettleser:

http://server-ip

Steg 6 → Installer phpMyAdmin

bash
sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl -y

Velg ingen webserver under installasjonen (vi setter opp manuelt). Aktiver moduler:

bash
sudo phpenmod mbstring
sudo systemctl restart php*-fpm

Steg 7 → Konfigurer Nginx for phpMyAdmin

Lag en Nginx-konfig:

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

Eksempelkonfig (bruk alias i stedet for root):

yml
server {
    listen 8080;  # Kjør på port 8080 istedenfor standard 80
    server_name server_ip;

    location /dbadmin {
        root /usr/share/phpmyadmin;
        index index.php;

        location ~ ^/dbadmin/(.+\.php)$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # juster etter PHP-versjon
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~* ^/dbadmin/(.+\.(ht|git|sql))$ {
            deny all;
        }
    }
}

Aktiver konfig:

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

Test og restart:

bash
sudo nginx -t
sudo systemctl reload nginx

Nå åpner du phpMyAdmin via:

http://server-ip:8080/dbadmin

Steg 8 → Ekstra sikkerhet for phpMyAdmin

  1. Bruk en annen port (som vist: listen 8080;).
  2. Endre alias (/dbadmin → bruk noe uvanlig, f.eks. /supersecretadmin123).
  3. IP-begrensning (tillat bare bestemte IP-er):
    location /supersecretadmin123 {
        allow 123.45.67.89;  # din IP
        deny all;
    }
    
  4. Aktiver HTTPS med Let's Encrypt:
bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d dittdomene.no
  1. Bruk sterke MySQL-passord og unngå root-login i phpMyAdmin.

Steg 9 → Brannmur (UFW)

Tillat kun portene du bruker (SSH, Nginx HTTPS, phpMyAdmin-porten hvis nødvendig):

bash
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp
sudo ufw enable

Oppsummering

  • Installer MySQL og sikre med mysql_secure_installation
  • Opprett en database og egen bruker
  • Installer Nginx + PHP
  • Installer phpMyAdmin men ikke koble til standard /phpmyadmin
  • Sett opp Nginx med alias + port (f.eks. http://server-ip:8080/dbadmin)
  • Sikre med brannmur, HTTPS og IP-begrensning

Med dette oppsettet er phpMyAdmin langt tryggere, og ikke tilgjengelig for hvem som helst 🚀