====== 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. ===== Installer PhpMyAdmin sur Debian 10 et suivants ===== 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 [[https://phoenixnap.com/kb/how-to-install-phpmyadmin-on-debian-10|ici]] (en anglais). Les principales étapes sont reprises ci-dessous. ==== Prérequis ==== On doit avoir installé les extensions suivantes : php-mysqli, php-xml. ==== 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'] = ''; ==== 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 ===== Reconfigurer PhpMyAdmin pour Apache2 ===== Si on a oublié de configurer PhpMyAdmin pour Apache, on peut relancer la configuration par : # dpkg-reconfigure phpmyadmin ===== Accès sur PhpMyAdmin ===== Si on souhaite donner un accès à **//un compte//** pour PhpMyAdmin, on donnera les droits via Mysql/MariaDB selon les besoins : GRANT ON .* TO @localhost identified by '' ==== Exemples ==== #compte avec tous les droits sur une base GRANT ALL PRIVILEGES ON bddGestion.* TO adminBG@localhost identified by 'mdp@DM1N'; #compte avec les droits sur les données de la base GRANT SELECT, INSERT, UPDATE, DELETE ON bddGestion TO usrBG@localhost identified by 'mpU5Rbg'; ==== Se connecter à PhpMyAdmin ==== Dans le navigateur, aller sur **//http://ip_serveur/phpmyadmin //** ===== Ancienne version ===== ==== Installation et accès ==== Pour installer et utiliser PhpMyAdmin, on suivra la procédure suivante : - Installer le paquetage //phpmyadmin// apt-get install phpmyadmin - 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 ''// - :!: Choisir la configuration automatique du serveur //Apache// (barre d’espace pour cocher la case) - Implanter la base de données nécessaire à la gestion de //PhpMyAdmin// (en indiquant le mot de passe de //MySQL//) - Configurer un mot de passe spécifique pour //PhpMyAdmin// (//il permettra ensuite de se connecter à l'interface avec des droits restreints//) - Vérifier le fonctionnement par le navigateur : [[http:///phpmyadmin]] (avec le compte phpmyadmin et le mot de passe renseigné). ===== 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= #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 -p // création du compte d'administration distante mysql> grant on . to @ identified by ''; //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']=''; $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']=''; On redémarrera le service web (exemple pour //apache//) : service apache2 restart //ou systemctl restart apache2