Gestionnaire PhPMyAdmin

PhpMyAdmin est une interface Web permettant de gérer les bases de données MySql ou MariaDB.

Installation et configuration

Prérequis

PhpMyAdmin tourne sur un serveur disposant d'un service HTTP (Apache, Nginx), d'un SGBD MySql ou MariaDB et de l'extension PHP.

Installation et accès

Pour installer et utiliser PhpMyAdmin, on suivra la procédure suivante :

  1. Installer le paquetage phpmyadmin
     apt-get install phpmyadmin
  2. Au cours de l'installation :

    Par défaut, on ne peut pas se connecter en utilisant le compte root.
    En mesurant le risque de sécurité, on peut le faire en donnant tous les privilèges à root@localhost identified by '<mot_de_passe>'

    1. :!: Choisir la configuration automatique du serveur Apache (barre d’espace pour cocher la case)
    2. Implanter la base de données nécessaire à la gestion de PhpMyAdmin (en indiquant le mot de passe de MySQL)
    3. Configurer un mot de passe spécifique pour PhpMyAdmin (il permettra ensuite de se connecter à l'interface avec des droits restreints)
  3. Vérifier le fonctionnement par le navigateur : http://<IPServeurBDD>/phpmyadmin (avec le compte phpmyadmin et le mot de passe renseigné).

Reconfigurer PhpMyAdmin pour Apache2

Si on a oublié de configurer PhpMyAdmin pour Apache, on peut relancer la configuration par :

# dpkg-reconfigure phpmyadmin

Accès Root sur PhpMyAdmin

Si on souhaite donner un accès à root pour PhpMyAdmin (ou un autre compte à définir), on donnera les droits via Mysql:

# mysql -u root [-p]    //l'option -p permet de saisir le mot de passe à l'invite de commande
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost identified by '<mot_de_passe_root>'

Installer PhpMyAdmin sur Debian 10

Depuis Debian 10, PhpMyAdmin n'a plus de source disponible.

On est donc tenu de l'installer à la main.

La démarche détaillée avec vérification des sources est décrite ici (en anglais). Les principales étapes sont reprises ci-dessous.

Récupérer le code PHP

Il peut être nécessaire d'installer wget : apt install wget

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

Dézipper l'archive en la recopiant dans le dossier des pages web du serveur

On commence par créer le dossier de destination, puis on dézippe.

mkdir /var/www/html/phpmyadmin
tar xvf phpMyAdmin-latest-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpmyadmin

Modifier le fichier de configuration

#on copie le fichier d'exemple
cp /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php
#on l'édite
nano /var/www/html/phpmyadmin/config.inc.php

Dans le fichier, on indiquera un mot de passe pour la gestion des cookies

$cfg['blowfish_secret'] = '<mettre_votre_mot_de_passe>';

Modifier les permissions du fichier pour en limiter l'accès

chmod 660 /var/www/html/phpmyadmin/config.inc.php

Modifier les habilitations du dossier pour le rendre accessible à Apache

chown –R www-data:www-data /var/www/html/phpmyadmin

Redémarrer le service apache2

systemctl restart  Apache2 
#ou
service apache2 restart 

Se connecter à PhpMyAdmin

Dans le navigateur, aller sur http://ip_serveur/phpmyadmin

Configurer PhpMyadmin en multi-sites

Finalité

Il est possible d'installer un serveur PhpMyAdmin unique pour gérer un ensemble de bases de données dispersées sur de multiples serveurs.

L'intérêt est de pouvoir avoir un point d'entrée unique, mais aussi de ne pas installer PhpMyadmin (et le serveur Web + Php associés) sur un serveur uniquement dédié à la gestion des données.

Préparation des serveurs MySql

Pour permettre la gestion à distance d'un serveur MySql, les réglages suivant doivent être appliqués sur chaque serveur MySQL.

1 Autoriser la connexion MySql depuis le serveur PhpMyAdmin

Dans le fichier /etc/mysql/my.cnf (ou parfois my.ini ou pour mariadb), modifier la valeur bind-address :

bind-address=<ip_du_serveur_phpmyadmin>    #par défaut, la valeur est limitée à 127.0.0.1 ou localhost

On redémarrera alors le service Mysql :

service mysql-server restart

2 Créer un compte habilité à se connecter depuis le serveur PhpMyadmin

Pour des raisons de sécurité, on évitera la connexion distante avec le compte root. Il faut donc créer un compte dédié à la gestion de MySql, autorisé à se connecter via le serveur PhpMyAdmin.

// se connecter à mysql
mysql -u <compte_d_admin> -p<mot_de_passe> 
// création du compte d'administration distante
mysql> grant <privileges> on <bases_concernées>.<tables> to <nom_compte>@<ip_serveur_phpmyadmin> identified by '<motPasse>';
//exemple 
mysql> grant all privileges on BaseGestion to gestAdmin@localhost identified by 'mpADMgest'

Configuration de PhpMyAdmin

Le paramétrage se passe dans le fichier de configuration de PhpMyAdmin /etc/phpmyadmin/config.inc.php :

#les lignes suivantes sont à ajouter pour chaque serveur MySQL
$i++;
$cfg['Servers'][$i]['verbose']='<nom_serveur_dans_la_liste>';
$cfg['Servers'][$i]['connect_type']='tcp';
$cfg['Servers'][$i]['extension']='mysqli';
$cfg['Servers'][$i]['auth_type']='cookie';
$cfg['Servers'][$i]['user']='';
$cfg['Servers'][$i]['password']='';
$cfg['Servers'][$i]['AllowNoPassword']=true;
$cfg['Servers'][$i]['host']='<ip_ou_fqdn_serveur_mysql>';

On redémarrera le service web (exemple pour apache) :

service apache2 restart
//ou
systemctl restart apache2