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 :
1 |
$ 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’ to │ database ‘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/
1 |
$ vi /etc/nginx/conf.d/phpmyadmin.conf |
Collez le contenu suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
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/
1 |
$ 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
1 |
$ vi /etc/nginx/phpmyadmin_pw |
1 |
admin:YWG41BPzVAkN6 |
Modifions le fichier /etc/nginx/conf.d/phpmyadmin.php pour décommenter les lignes suivantes :
1 2 3 |
[...] # auth_basic "Admin Login"; # auth_basic_user_file /etc/nginx/phpmyadmin_pw; |
Relancez nginx et tester l’accès
1 |
$ 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
1 |
$ mv /usr/share/phpmyadmin /usr/share/phpmyadmin_SERVER |
1 |
$ vi /etc/nginx/conf.d/phpmyadmin.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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/
1 |
$ 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
1 2 |
$ 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
1 2 3 4 |
$ 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.
1 2 3 |
$ cd /usr/share/phpmyadmin $ cp config.sample.inc.php config.inc.php $ vi config.inc.php |
1 |
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ |
Maintenant il suffit de créer un dossier tmp pour phpMyAdmin :
1 2 |
$ 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
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/
1 |
$ 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
1 |
$ vi /etc/nginx/phpmyadmin_pw |
1 |
admin:YWG41BPzVAkN6 |
Modifions le fichier /etc/nginx/conf.d/phpmyadmin.php pour décommenter les lignes suivantes :
1 2 3 |
[...] # auth_basic "Admin Login"; # auth_basic_user_file /etc/nginx/phpmyadmin_pw; |
Relancez nginx et tester l’accès
1 |
$ 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
1 |
$ mv /usr/share/phpmyadmin /usr/share/phpmyadmin_SERVER |
1 |
$ vi /etc/nginx/conf.d/phpmyadmin.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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/
1 |
$ 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
1
|
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
1
2
|
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é.