Installer la dernière version de Phpmyadmin

Présentation

PhpMyAdmin est une interface web en PHP pour administrer à distance les SGBD MySQL et MariaDB.

Puisque la dernière version de phpMyAdmin n’est pas disponible sur dépôt Debian, nous commencerons par l’installer via le dépôt et nous le mettrons à jour manuellement. 

Installation de phpMyAdmin

Lancons l’installation :

$ apt update && apt install phpmyadmin

Si vous utilisez Nginx, il est inutile de choisir entre Apache et lighttpd, cliquez sur OK

Si vous avez une erreur du type mysql said: ERROR 1044 (42000) at line 1: Access denied for user ‘debian-sys-maint’@‘localhost’ todatabase ‘phpmyadmin’, allez plus bas pour la correction.

Configuration et mise à jour de phpMyAdmin

Pour permettre l’accès à phpMyadmin, nous allons devoir créer un fichier de configuration dans /etc/nginx/conf.d/

$ vi /etc/nginx/conf.d/phpmyadmin.conf

Collez le contenu suivant :

 
server {
  listen 80;
  listen [::]:80;
  server_name _;

  access_log /var/log/nginx/phpmyadmin-access.log;
  error_log /var/log/nginx/phpmyadmin-error.log;

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

  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;

  location = /50x.html {
    root /usr/share/nginx/html;
  }

  location ~ /\.ht {
    deny all;
  }

  location /phpmyadmin {
    root /usr/share/;
    index index.php;
    try_files $uri $uri/ =404;


#    auth_basic "Admin Login";
#    auth_basic_user_file /etc/nginx/phpmyadmin_pw;

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

    location ~ /phpmyadmin/(.+\.php)$ {
      fastcgi_pass unix:/run/php/php7.2-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
    }
   }

}

Redémarrez Nginx et accédez à phpMyAdmin sur http://[IP_DU_SERVEUR]/phpmyadmin/

$ systemctl restart nginx

Sécurisation de phpMyAdmin via .htaccess

Il y a 2 choses à faire pour sécuriser l’accès à phpMyAdmin : la 1ère consiste à ajouter une authentification via un fichier .htaccess et la seconde est de modifier le nom du répertoire.

Pour commencer allez sur ce site pour chiffrer le mot de passe.
Voici ce que cela donne si vous souhaitez que le mot de passe soit ‘admin’ :
admin:YWG41BPzVAkN6
Créez le fichier suivant et collez le contenu

$ vi /etc/nginx/phpmyadmin_pw
admin:YWG41BPzVAkN6

Modifions le fichier /etc/nginx/conf.d/phpmyadmin.php pour décommenter les lignes suivantes :

[...]
#    auth_basic "Admin Login";
#    auth_basic_user_file /etc/nginx/phpmyadmin_pw;

Relancez nginx et tester l’accès

$ systemctl restart nginx

Modification du répertoire

Renommez le dossier /usr/share/phpmyadmin par un autre nom (ex le nom du serveur) et modifiez le fichier de configuration nginx

$ mv /usr/share/phpmyadmin /usr/share/phpmyadmin_SERVER
$ vi /etc/nginx/conf.d/phpmyadmin.conf
location /phpmyadmin_SERVER {
    root /usr/share/;
    index index.php;
    try_files $uri $uri/ =404;

    auth_basic "Admin Login";
    auth_basic_user_file /etc/nginx/phpmyadmin_pw;

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

    location ~ /phpmyadmin_SERVER/(.+\.php)$ {
      fastcgi_pass unix:/run/php/php7.2-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;

Redémarrez le serveur nginx et accédez à phpMyAdmin via la nouvelle URL (ex: http://[IP_DU_SERVEUR]/phpmyadmin_SERVER/

$ systemctl restart nginx

Mise à jour manuelle de phpMyAdmin

Commençons par télécharger la dernière version disponible sur le site officiel de phpMyAdmin

$ cd /tmp/
$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

Nous allons archiver l’actuel dossier phpMyAdmin et copier les fichiers récupérés

$ cd /usr/share
$ mv phpmyadmin phpmyadmin_old/
$ tar zxvf /tmp/phpMyAdmin-latest-all-languages.tar.gz
$ mv phpMyAdmin-4.8.5-all-languages phpmyadmin

Vérifiez l’interface phpMyAdmin. Vous devriez avoir 2 messages d’avertissement en bas de page.

 

Voici les 2 messages d’avertissement :

[pre]Le fichier de configuration nécessite maintenant une phrase de passe secrète (blowfish_secret)[/pre]

Le Blowfish Secret est utilisé pour authentifier le cookie. Allez sur le site https://www.motorsportdiesel.com/tools/blowfish-salt/pma/ et générez un Blowfish Secret que nous allons copier dans le fichier /usr/share/phpmyadmin/config.inc.php.

$ cd /usr/share/phpmyadmin
$ cp config.sample.inc.php config.inc.php
$ vi config.inc.php
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Maintenant il suffit de créer un dossier tmp pour phpMyAdmin :

$ mkdir /usr/share/phpmyadmin/tmp
$ chown www-data:www-data /usr/share/phpmyadmin/tmp

 

$chg[‘TempDir’] (/tmp/) n’est pas accessible. phpMyAdmin est incapable de mettre en cache les modèles et de ce fait sera lent.

 
server {
  listen 80;
  listen [::]:80;
  server_name _;

  access_log /var/log/nginx/phpmyadmin-access.log;
  error_log /var/log/nginx/phpmyadmin-error.log;

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

  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;

  location = /50x.html {
    root /usr/share/nginx/html;
  }

  location ~ /\.ht {
    deny all;
  }

  location /phpmyadmin {
    root /usr/share/;
    index index.php;
    try_files $uri $uri/ =404;


#    auth_basic "Admin Login";
#    auth_basic_user_file /etc/nginx/phpmyadmin_pw;

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

    location ~ /phpmyadmin/(.+\.php)$ {
      fastcgi_pass unix:/run/php/php7.2-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
    }
   }

}

Redémarrez Nginx et accédez à phpMyAdmin sur http://[IP_DU_SERVEUR]/phpmyadmin/

$ systemctl restart nginx

Sécurisation de phpMyAdmin via .htaccess

Il y a 2 choses à faire pour sécuriser l’accès à phpMyAdmin : la 1ère consiste à ajouter une authentification via un fichier .htaccess et la seconde est de modifier le nom du répertoire.

Pour commencer allez sur ce site pour chiffrer le mot de passe.
Voici ce que cela donne si vous souhaitez que le mot de passe soit ‘admin’ :
admin:YWG41BPzVAkN6
Créez le fichier suivant et collez le contenu

$ vi /etc/nginx/phpmyadmin_pw
admin:YWG41BPzVAkN6

Modifions le fichier /etc/nginx/conf.d/phpmyadmin.php pour décommenter les lignes suivantes :

[...]
#    auth_basic "Admin Login";
#    auth_basic_user_file /etc/nginx/phpmyadmin_pw;

Relancez nginx et tester l’accès

$ systemctl restart nginx

Modification du répertoire

Renommez le dossier /usr/share/phpmyadmin par un autre nom (ex le nom du serveur) et modifiez le fichier de configuration nginx

$ mv /usr/share/phpmyadmin /usr/share/phpmyadmin_SERVER
$ vi /etc/nginx/conf.d/phpmyadmin.conf
location /phpmyadmin_SERVER {
    root /usr/share/;
    index index.php;
    try_files $uri $uri/ =404;

    auth_basic "Admin Login";
    auth_basic_user_file /etc/nginx/phpmyadmin_pw;

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

    location ~ /phpmyadmin_SERVER/(.+\.php)$ {
      fastcgi_pass unix:/run/php/php7.2-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;

Redémarrez le serveur nginx et accédez à phpMyAdmin via la nouvelle URL (ex: http://[IP_DU_SERVEUR]/phpmyadmin_SERVER/

$ systemctl restart nginx

Foire aux problèmes

mysql said: ERROR 1044 (42000) at line 1: Access denied for user 'debian-sys-maint'@'localhost' to │ database 'phpmyadmin'

Si lors de l’installation de phpMyAdmin, vous avez l’erreur suivante, cela signifie que l’utilisateur debian-sys-main n’est pas autorisé à créer la base de données phpmyadmin

mysql said: ERROR 1044 (42000) at line 1: Access denied for user 'debian-sys-maint'@'localhost' to │ database 'phpmyadmin'

Il suffit d’ouvrir la console mysql et de lui donner les droits nécessaire via la commande GRANT

mysql -u root -p
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' WITH GRANT OPTION;

Recommencez la procédure d’installation de phpMyAdmin et le problème est corrigé.

Vous aimerez aussi...