Installer un serveur dédié sous Ubuntu Serveur
Date de publication : 09 décembre 2011.
V. PhpMyAdmin pour administrer MySQL
V-A. Installation
V-B. Configuration
V. PhpMyAdmin pour administrer MySQL
Nous y voilà, le serveur web et le serveur de bases de données étant configurés, nous allons déployer PhpMyAdmin afin de pouvoir administrer nos bases mais également vérifier le bon fonctionnement de notre installation (Web, MySQL et SSL)
V-A. Installation
Tout d'abord, installons PhpMyAdmin :
sudo apt-get install phpmyadmin
|

Choix du serveur web : Apache2
 |
Si vous appuyez directement sur Entrée, votre choix ne sera pas pris en compte
Sélectionnez tout d'abord apache2 en appyant sur la barre espace puis, une fois apache2 marquée d'une étoile, validez avec Entrée.
|

Configurer avec dbconfig-common ? Oui
Choisissez "oui"

Mot de passe de l'administrateur MySQL
Veuillez saisir ici le mot de passe correspondant au compte root de MySQL, ce mot de passe permettra à l'interface PhpMyAdmin de se connecter aux bases de données.

Mot de passe de l'administrateur phpmyadmin
Ce mot de passe correspondra à celui demandé pour se connecter à phpmyadmin. Pour des raisons de sécurité, il est préférable de ne pas définir un mot de passe vide. Bien entendu, vous confirmez également votre mot de passe.
L'assistant d'installation étant terminé, tentons de nous connecter à phpmyadmin via votre navigateur Web, il devrait être accessible depuis monsite.fr/phpmyadmin
Curieusement, vous constaterez que vous pouvez vous connecter en root via le mot de passe MySQL et non celui de phpmyadmin. Pour remédier à cela, une fois loggé, nous allons modifier le mot de passe.

Modifier le mot de passe
Une fois le mot de passe changé, occupons nous de la configuration afin d'activer certaines fonctionnalités et de sécuriser tout cela.
Tout d'abord, définissons un utilisateur et son mot de passe afin de limiter les accès.
sudo htpasswd /etc/phpmyadmin/htpasswd.setup monadmin
|
Cependant, un compte admin existait déjà dans le fichier, nous allons donc l'éditer afin de le retirer :
sudo nano /etc/phpmyadmin/htpasswd.setup
|
Supprimez la ligne Admin:* (mettez vous sur la première ligne puis raccourci Ctrl+K)
L'installation faite, nous pouvons passer à la partie configuration.
V-B. Configuration
Celle-ci peut se faire selon deux méthodes :
La première méthode serait de passer via l'interface de configuration disponible via monsite.fr/phpmyadmin/setup après l'exécution de la commande sudo /usr/sbin/pma-configure. N'oubliez pas alors de finaliser la configuration via sudo /usr/sbin/pma-secure
La deuxième méthode (celle que l'on utilisera dans ce tutoriel) consiste à modifier manuellement les fichiers de configuration.
Commençons tout d'abord par écraser la configuration principale suivante :
sudo nano /etc/phpmyadmin/config.inc.php
|
<?php
/**
* Configuration du serveur
*/
$i = 0;
// The $cfg['Servers'] array starts with $cfg['Servers'][1]. Do not use $cfg['Servers'][0].
// You can disable a server config entry by setting host to ''.
/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* End of servers configuration */
$cfg['UploadDir'] = './upload';
$cfg['SaveDir'] = './save';
$cfg['TempDir'] = './tmp';
$cfg['blowfish_secret'] = 'e3r123rfd4d65sg564d1e23f18zq42s';
$cfg['ForceSSL'] = true;
$cfg['DefaultLang'] = 'fr-utf-8';
$cfg['ServerDefault'] = 1;
/* Features phpmyadmin */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$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]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
|
Voici quelques explications concernant les différents paramètres renseignés :
- $cfg['blowfish_secret'] définit la chaine de chiffrage pour une authentification par cookie, elle est nécessaire pour le fonctionnement interne de phpmyadmin. Saisissez une chaine de caractère aléatoire complexe (il n'est pas nécessaire de la mémoriser).
- $cfg['ForceSSL'], lorsque égal à true, interdit toute connexion à phpmyadmin sans sécurisation SSL
- $cfg['DefaultLang'] détermine la langue et le jeu de caractère à utiliser
 |
Vous trouverez d'autres informations à ce sujet dans la documentation de phpmyadmin
|
Afin d'effectuer les opérations qui vont suivre, il peut être nécessaire d'activer temporairement le profil default-ssl d'Apache. A la fin de ce chapitre nous le retirerons.
sudo a2ensite default-ssl
|
Nous pouvons maintenant nous connecter à phpmyadmin via monsite.fr/phpmyadmin et nous identifier avec le compte root
Pour des raisons de sécurité, nous allons créer un autre utilisateur avec pouvoir afin d'interdire à terme l'utilisation distante de l'utilisateur root.
Pour cela, cliquez sur l'onglet privilèges puis Ajouter un utilisateur, Vous devriez alors arriver sur l'interface suivante :

Créez votre utilisateur pour le serveur local, n'oubliez pas tout cocher dans Privilèges globaux
Ceci étant fait, vérifions que notre nouvel utilisateur fonctionne bien. Connectez-vous avec ce dernier.
Si tout semble bien fonctionner, nous allons dès à présent interdire tout accès à phpmyadmin via l'utilisateur root. Pour cela, rien de plus simple, il nous suffit de modifier le fichier de configuration suivant afin qu'il ressemble à cela :
sudo nano /etc/phpmyadmin/config.inc.php
|
<?php
/**
* Server(s) configuration
*/
$i = 0;
// The $cfg['Servers'] array starts with $cfg['Servers'][1]. Do not use $cfg['Servers'][0].
// You can disable a server config entry by setting host to ''.
/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* End of servers configuration */
$cfg['UploadDir'] = './upload';
$cfg['SaveDir'] = './save';
$cfg['TempDir'] = './tmp';
$cfg['blowfish_secret'] = 'e3r123rfd4d65sg564d1e23f18zq42s';
$cfg['ForceSSL'] = true;
$cfg['DefaultLang'] = 'fr-utf-8';
$cfg['ServerDefault'] = 1;
/* on interdit tout connexion pour l'utilisateur root : */
$cfg['Servers'][$i]['AllowRoot'] = false;
/* Features phpmyadmin */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$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]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
|
Effectivement, lorsque nous le vérifions, seul notre nouvel utilisateur peut se connecter. Quant à l'utilisateur root, il se fait refuser la connexion.
Toujours pour des raisons de sécurité, nous allons changer le chemin d'accès à phpmyadmin. En effet, les robots ont tendance à scanner les alias connus de phpmyadmin.
Copions donc notre profil apache default-ssl afin de s'en servir comme base de travail pour phpmyadmin.
sudo cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/monpma.monsite.fr
|
Puis éditons le afin d'y ajouter quelques modifications :
sudo nano /etc/apache2/sites-available/monpma.monsite.fr
|
<IfModule mod_ssl.c>
<VirtualHost *:80>
# force la connexion sécurisé SSL via une redirection
ServerName monpma.monsite.fr
Redirect / https://monpma.monsite.fr
</VirtualHost>
<VirtualHost _default_:443>
ServerAdmin postmaster@monsite.fr
ServerName monpma.monsite.fr
DocumentRoot /usr/share/phpmyadmin
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</Directory>
# Disallow web access for setup
<Directory /usr/share/phpmyadmin/setup>
Order Deny,Allow
Deny from All
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Order Deny,Allow
Deny from All
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/phpmyadmin_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/phpmyadmin_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
[...]
|
Nous gardons toute la partie qui suit SSLEngine tel que définit lors de la configuration du certificat SSL.
Notre configuration réalisé, il ne nous reste plus qu'à remplacer celle par défaut par celle-ci.
Activons tout d'abord notre virtual host et désactivons default-ssl, puis désactivons l'accès par défaut et relançons Apache afin que les changements soient pris en compte :
sudo a2ensite monpma.monsite.fr
sudo a2dissite default-ssl
sudo rm /etc/apache2/conf.d/phpmyadmin.conf
sudo /etc/init.d/apache2 restart
|
PhpMyAdmin est maintenant pleinement opérationnel et sécurisé.


Copyright © 2011 Benjamin GAGNEUX.
Aucune reproduction, même partielle, ne peut être faite
de ce site ni de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à
trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.