Outils Web d’Administration – phpMyAdmin
Cet article présente l’installation de phpMyAdmin dans une zone d’administration sécurisée dont la base est présentée dans l’introduction de cette série. Est-ce la peine de présenter phpMyAdmin ? Il s’agit d’une interface web d’administration de ses bases de données MySQL. Elle permet d’exécuter, facilement et sans grandes connaissances, de nombreuses requêtes, d’effectuer la plupart des tâches administratives comme la sauvegarde/restauration des bases, etc.
La plupart des distributions linux (Debian, Ubuntu, Fedora, etc.) disposent du package, alors quel est l’intérêt d’installer depuis les sources ? Bien souvent, les versions fournies ne sont pas les plus à jours. De plus on ne maîtrise pas vraiment les répertoires d’installation et leur intégration dans l’architecture globale de son serveur web. rien ne remplace donc une installation customisée pour ses besoins.
Prérequis
PhpMyAdmin requiert le package Mcrypt à installer avec apt-get install php5-mcrypt
.
Récupération Packages et Installation
Les derniers packages disponibles sont listés sur le site de phpMyAdmin. A l’heure actuelle il s’agit des versions 4.2.1. Je récupère ici la version « all-languages » qui comme son nom l’indique …
1 2 3 4 5 | root@server:~# cd /var/www/admin/ root@server:/var/www/admin# wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.2.1/phpMyAdmin-4.2.1-all-languages.tar.gz [...] root@server:/var/www/admin# md5sum ./phpMyAdmin-4.2.1-all-languages.tar.gz 031bb9e9fc3c5d24aaff0ebf7b46623a ./phpMyAdmin-4.2.1-all-languages.tar.gz |
Le site phpMyAdmin fourni les checksums des fichiers. Autant en profiter pour tester localement avec md5sum
le fichier tar chargé.
Il ne reste plus qu’à décompresser l’archive et récupérer un template du fichier de configuration config.inc.php
1 2 3 4 5 6 7 | root@server:/var/www/admin# tar -xzf ./phpMyAdmin-4.2.1-all-languages.tar.gz root@server:/var/www/admin# rm ./phpMyAdmin-4.2.1-all-languages.tar.gz root@server:/var/www/admin# mv ./phpMyAdmin-4.2.1-all-languages ./phpmyadmin root@server:/var/www/admin# cd ./phpmyadmin/ root@server:/var/www/admin/phpmyadmin# cp ./config.sample.inc.php ./config.inc.php root@server:/var/www/admin/phpmyadmin# chmod 644 ./config.inc.php root@server:/var/www/admin/phpmyadmin# rm /var/www/admin/phpmyadmin/setup -R |
Création de la Base de Données phpMyAdmin et Configuration
Afin d’éviter le message suivant « Le stockage de configurations phpMyAdmin n’est pas complètement configuré » et de bénéficier de toutes les fonctionnalités, une base de données pour phpMyAdmin doit être créée et initialisée avec le script create_tables.sql fourni par phpmyadmin. En se basant sur le script bash proposé dans l’introduction :
1 | root@server:/var/www/admin/phpmyadmin# /root/create_db phpmyadmin pma pmapass /var/www/admin/phpmyadmin/examples/create_tables.sql |
Les paramètres importants du fichier config.inc.php
à modifier:
- Ligne 5 : Il faut changer le blowfish secret. Pour en générer un vite fait, on peut en copier/coller un depuis le site du générateur de WordPress
- Ligne 11-12 : à adapter en fonction de la config locale de son serveur mysql
- Ligne 13,14 et 17 : ce sont les paramètres de la base de données crée juste avant
- Ligne 18-34 : tout dé-commenter
- Ligne 37 : à rajouter pour la bonne gestion du https
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 | /* * This is needed for cookie based authentication to encrypt password in * cookie */ $cfg['blowfish_secret'] = 'a8b7c6d'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ /* * phpMyAdmin configuration storage settings. */ /* User used to manipulate with storage */ $cfg['Servers'][$i]['controlhost'] = 'localhost'; $cfg['Servers'][$i]['controlport'] = '3306'; $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'pmapass'; /* Storage database and tables */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; /* pour permettre le SSL */ $cfg['ForceSSL'] = true; |
Pour plus d’information, une liste exhaustive des options est disponible sur le site de phpMyAdmin.
Configuration Nginx et Sécurisation
La config Nginx fournie dans l’intro fonctionne directement. Afin d’améliorer la sécurité, on peut rajouter les 2 lignes suivantes à sa config nginx dans le bloc server:
1 2 | location = /phpmyadmin/config.inc.php { deny all; } location /phpmyadmin/libraries { deny all; } |
Toutes les recommandations de sécurisation que pouvait fournir le site phpMyAdmin (authentification par cookies, chmod, etc.) ont été suivies. Il reste encore quelques paramètres optionnels pour améliorer la sécurité, mais l’accès est d’abord sécurisé à travers celui de la zone d’admin en https. Pour peu que les mots de passe soient bien choisis (éviter 12345 ou azerty !) et changés régulièrement, on sera tranquille.
Maintenance et Upgrade
Pour les mises à jour, il s’agit essentiellement de suivre les même étapes qu’à l’installation sans toucher à la base de données phpmyadmin, plus quelques « tweaking » du fichier config.inc.php
au cas par cas.
Si jamais il était nécessaire d’upgrader la base de données avec un script, il suffirait de repasser le script de création de la base de donnée :
1 | root@server:/var/www/admin/phpmyadmin# /root/create_db phpmyadmin pma pmapass /var/www/admin/phpmyadmin/examples/upgrade_tables_mysql_4_1_2+.sql |
Il n’efface pas la base de donnée puisqu’elle elle existe déjà, recrée l’utilisateur déjà existant et passe le script d’upgrade. Donc normalement, pas de soucis. Mais comme d’habitude, mieux vaut sauvegarder sa base de données avant !
Voilà, c’est fini !! On accède maintenant au site avec http://admin-tools.writesthisblog.com/phpmyadmin/