PhpMyAdmin: Gestion de la BD

Il s’agit de l’une des plus célèbres interfaces pour gérer une base de données MySQL, en local ou de manière distante (si la sécurité est précise dans ce cas). Cette interface pratique permet d’exécuter, très facilement des requêtes comme les créations de table de données, insertions, mises à jour, suppressions … .

 

…et modifications de structure de la base de données, ainsi que l’attribution et la révocation de droits et l’import/export

Ce système permet de sauvegarder commodément une base de données sous la forme d’un fichier « .sql » ou d’y importer des données sauvegardées.

Les requêtes SQL restent possibles, ce qui permet également de les tester interactivement lors de la création d’un site pour les utiliser ensuite une fois au point.

2. TÉLÉCHARGEMENT ET INSTALLATION DES PAQUETS REQUIS

su

 

# Mise à niveau du système
apt-get update
apt-get upgrade

3. SAISIR ET EXÉCUTER LE PETIT SCRIPT SUIVANT POUR INSTALLER PHPMYADMIN

nano  /tmp/inst-phpmyadmin.sh

 

#

# ———————————————————————————
# Télécharger la dernière version de phpmyadmin et décompresser l’archive
#
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) »
# ———————————————————————————
# Se placer dans le répertoire temporaire du système
cd /tmp
sudo wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.gz
sleep 1
sudo tar xvf phpMyAdmin-${VERSION}-all-languages.tar.gz
sleep 1
#
# ———————————————————————————
# Installer phpmyadmin dans son répertoire naturel (usr/share)
#
sudo mv phpMyAdmin-*/ /usr/share/phpmyadmin
#
# ———————————————————————————
# Configurer PhpMyadmin, rectifier les droits et supprimer le sous-répertoire
# ‘setup’ par sécurité
#
sed -i -e « s/\$cfg\[‘blowfish_secret’\] =  »/\$cfg\[‘blowfish_secret’\] = ‘UcnsasspLbdcadydv’/g » /usr/share/phpmyadmin/config.inc.php
#
sudo chmod 660 /var/www/phpmyadmin/config.inc.php
sudo chown –R www-data:www-data /var/www/html/phpmyadmin
#
sudo rm -rf /usr/share/phpmyadmin/setup
#
# ———————————————————————————
# Créer un répertoire de paramètres dans /etc et y placer un lien symbolique d’accès
#
sudo mkdir /etc/phpmyadmin
sudo ln -s /usr/share/phpmyadmin/config.inc.php /etc/phpmyadmin/config.inc.php
#
# ———————————————————————————–
# créer un lien symbolique d’accès pour le WebMaster de domainepme.tld
#
sudo ln -s /usr/share/phpmyadmin/config.inc.php /var/www/domainepme.tld/phpmyadmin
#
# ———————————————————————————
# Création base et utilisateur pour ‘PhpMyAdmin’
# Les droits de cet utilisateurs sont étendus, (Accès root interdit depuis la 4.6)
#
sudo mysql -u root -prootofmariadb -e « CREATE DATABASE phpmyadmin CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; »
sudo mysql -u root -prootofmariadb -e « CREATE USER phpmyadmin@localhost; »
sudo mysql -u root -prootofmariadb -e « SET PASSWORD FOR phpmyadmin@localhost=PASSWORD(‘rootofphpmyadmin’); »
sudo mysql -u root -prootofmariadb -e « GRANT ALL PRIVILEGES ON *.* TO ‘phpmyadmin’@’localhost’; »
sudo mysql -u root -prootofmariadb -e « FLUSH PRIVILEGES; »
sudo mysql -u root -prootofmariadb -e « SHOW DATABASES; »
#
# ———————————————————————————
# Ajout hôte virtuel Nginx pour ‘PhpMyAdmin’ + lien symbolique + droits
#
cd /etc/nginx/sites-available
#
sudo cp domainepme.tld phpmyadmin
sed -i -e « s/server_name.*domainepme.tld.*www.domainepme.tld/server_name\tphpmyadmin.domainepme.tld/g » phpmyadmin
sed -i -e « s/root.*\/var\/www\/domainepme.tld/root\t\t\/var\/www\/domainepme.tld\/phpmyadmin/g » phpmyadmin
sed -i -e « s/index.*index.php index.html index.htm/index\t\t\index.php/g » phpmyadmin
#
sudo chown www-data:www-data /etc/nginx/sites-available/phpmyadmin
sudo ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/phpmyadmin
#
# ———————————————————————————
# Suppression de l’archive téléchargée de phpmyadmin
#
rm /tmp/phpMyAdmin*.tar.gz
#
# ———————————————————————————
# Relance du serveur nginx
#
sudo systemctl restart nginx

Rendre ce script exécutable:

chmod +x /tmp/inst-phpmyadmin.sh

Exécuter le script

bash /tmp/inst-phpmyadmin.sh

 

4. CRÉER UN HÔTE VIRTUEL POUR NGINX

nano /etc/nginx/sites-available/phpmyadmin

 

Et y placer :

 

server {
listen 80 ;
#
server_name phpmyadmin.domainepme.tld;
root /var/www/domainepme.tld/phpmyadmin;
index index.php;
#
# force la redirection automatique http vers http
#
return 301 https://$server_name$request_uri;
}
#
###############
# SERVICE HTTPS
###############
#
server {
#
listen 443 ssl http2 ;
#
server_name phpmyadmin.domainepme.tld;
root /var/www/domainepme.tld/phpmyadmin;
index index.php;
#
ssl on;
# Certificats
ssl_certificate /etc/letsencrypt/live/domainepme.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domainepme.tld/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/domainepme.tld/fullchain.pem;
#
# OCSP Stapling – fetch OCSP records from URL in ssl_certificate and
# cache them
ssl_stapling on;
ssl_stapling_verify on;
#
# Certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
#
# Protocoles & Chiffrement
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers « ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384 »;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/dh2048.pem;
ssl_ecdh_curve secp384r1;
#
resolver 127.0.0.1 ;
# 213.251.188.141;
#
# Entêtes supplémentaires
add_header Strict-Transport-Security « max-age=15768000; includeSubDomains; preload »;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection « 1; mode=block »;
add_header X-Robots-Tag none;
#
# Max upload size
client_max_body_size 100M;
#
# ne pas enlever la ligne suivante
# [Sed: Insertion]
#
# Interprétation des scripts php par Nginx
#
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_buffers 16 4k;
}
#
# Favicon du site
location = /favicon.ico { log_not_found off; access_log off; }
#
# Directives pour les ‘bots’
location = /robots.txt { allow all; log_not_found off; access_log off; }
#
# On met en ‘cache’ les fichiers statiques courants
location ~* \.(html|css|js|png|jpg|jpeg|gif|ico|svg|eot|woff|ttf)$ { expires max; }
#
# refus de servir les fichiers commençant par un point
location ~ /\. { deny all; }
#
# Refus d’upload d’un fichier php (piratage)
location ~* /(?:uploads|files)/.*\.php$ { deny all; }
#
# … sinon tenter de servir le fichier demandé
location / { try_files $uri $uri/ =404; }
}

Rendre NGINX propriétaire et usager :

chown www-data:www-data /etc/nginx/sites-available/phpmyadmin

le service sera appelé par l’url : https://phpmyadmin.domainepme.tld

5. SÉCURISATION PHPMYADMIN

Supprimer le répertoire de configuration initiale de phpmyadmin

rm -rf /usr/share/phpmyadmin/setup/

6. RELANCER LE SERVICE NGINX POUR « PRISE EN COMPTE»

systemctl nginx reload

 

Laisser un commentaire

Plugin Kapsule Corp