doganddev
Accueil Blog Boutique

phpMyAdmin sur Debian

DOG&DEV · 25/01/2025

Mises à Jour VPN Sécurité MySQL
phpMyAdmin sur Debian

phpMyAdmin sur Debian

phpMyAdmin permet d’administrer MySQL ou MariaDB via une interface web. Ce guide décrit l’installation sur Debian avec Apache ou Nginx, la configuration de base et la sécurisation (auth, IP, HTTPS).

Prérequis

  • Debian 11 ou 12
  • MySQL ou MariaDB installé et opérationnel
  • Apache ou Nginx + PHP avec extensions (mysql, mysqli, etc.)
  • Accès root ou sudo

Installation

sudo apt update
sudo apt install phpmyadmin

Le paquet demande : serveur web (Apache ou lighttpd — si vous utilisez Nginx, choisir apache2 pour installer les dépendances PHP, puis configurer Nginx à la main ; ou installer les paquets PHP à part et ignorer le serveur proposé).

Pour Nginx, installez d’abord PHP et les extensions :

sudo apt install php php-mysql php-mbstring php-zip php-gd
sudo apt install phpmyadmin

Si le script ne propose que Apache/lighttpd, les fichiers phpMyAdmin seront dans /usr/share/phpmyadmin/. On configure Nginx pour pointer vers ce répertoire (ou une copie).

Configuration Apache

Si vous avez choisi Apache, un alias ou un virtualhost est en général créé. Accès type : http://IP_du_serveur/phpmyadmin.

Pour un VirtualHost dédié (recommandé pour restreindre l’accès) :

<VirtualHost *:80>
    ServerName pma.votredomaine.local
    DocumentRoot /usr/share/phpmyadmin
    <Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Configuration Nginx

Exemple pour servir phpMyAdmin sous /phpmyadmin :

server {
    listen 80;
    server_name _;
    root /usr/share/phpmyadmin;
    index index.php;

    location / {
        try_files $uri $uri/ =404;
    }

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

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

Ou, si vous avez déjà un server pour un site, ajoutez une location :

location /phpmyadmin {
    alias /usr/share/phpmyadmin;
    index index.php;
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }
}

(À adapter selon votre root et votre fastcgi_pass.)

Recharger Nginx : sudo nginx -t && sudo systemctl reload nginx.

Configuration phpMyAdmin (config.inc.php)

Fichier : /etc/phpmyadmin/config.inc.php ou /usr/share/phpmyadmin/config.inc.php (selon la version). Souvent, un config.sample.inc.php sert de base.

  • Authentification : par défaut, phpMyAdmin utilise les utilisateurs MySQL. Créer un utilisateur dédié (pas root) :
CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mot_de_passe_fort';
GRANT SELECT, INSERT, UPDATE, DELETE ON mysql.* TO 'pma'@'localhost';
FLUSH PRIVILEGES;
  • blowfish_secret : pour le stockage des cookies, définir une chaîne aléatoire dans $cfg['blowfish_secret'].

Sécurisation

  • HTTPS : servir phpMyAdmin uniquement en HTTPS (Let’s Encrypt, reverse proxy).
  • Restriction par IP : dans Nginx ou Apache, limiter l’accès à votre IP ou à un VPN :

Nginx :

location /phpmyadmin {
    allow 203.0.113.50;
    deny all;
    # ... alias, php, etc.
}

Apache :

<Directory /usr/share/phpmyadmin>
    Require ip 203.0.113.50
</Directory>
  • Sous-domaine ou chemin peu évident : éviter /phpmyadmin si trop exposé ; par ex. /gestion-db-xyz ou un sous-domaine dédié.
  • Suppression des scripts de test et d’exemples s’ils existent.

Dépannage

Symptôme Cause possible Correctif
« Cannot connect to MySQL » MySQL non démarré, mauvais user/host, socket systemctl status mysql ; vérifier user/host (localhost, 127.0.0.1) et config.inc.php
404 Mauvais root/alias, mauvaise location Vérifier le chemin /usr/share/phpmyadmin et la config Nginx/Apache
Erreur 500 PHP, extensions, droits Vérifier php -m (mysqli, etc.) ; logs PHP et Nginx/Apache ; droits sur /usr/share/phpmyadmin

Bonnes pratiques

  • Utiliser un utilisateur MySQL dédié avec des droits limités au besoin.
  • Ne pas exposer phpMyAdmin sur 0.0.0.0 sans restriction ; IP ou VPN.
  • Pour la gestion MySQL sur Windows : mysql-windowsserver ; pour la connexion depuis FiveM : fivem-sql ; pour Laravel : laravel-plesk-website.

Ressources


Cet article s’inscrit dans notre série de guides hébergement et gaming. Pour un serveur sur-mesure, contact.

Commentaires (0)

Laisser un commentaire