MySQL Configuration · 5 min read · Jan 29, 2026

Gestion de plusieurs serveurs MySQL à partir d'une installation phpMyAdmin (en utilisant le chiffrement SSL) - Page 2

3 Configurer phpMyAdmin

local.example.com:

Avant de procéder à la configuration de phpMyAdmin, vérifions d’abord si nous pouvons vraiment nous connecter depuis local.example.com au serveur MySQL sur remote.example.com (via une connexion SSL) :

mysql --ssl-ca=/etc/mysql/newcerts/ca-cert.pem --ssl-cert=/etc/mysql/newcerts/client-cert.pem --ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -p

On vous demandera le mot de passe, et si tout se passe bien, vous aurez accès :

root@local:/etc/mysql/newcerts# mysql –ssl-ca=/etc/mysql/newcerts/ca-cert.pem –ssl-cert=/etc/mysql/newcerts/client-cert.pem –ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -p
Entrez le mot de passe :
Bienvenue dans le moniteur MySQL. Les commandes se terminent par ; ou \g.
Votre identifiant de connexion MySQL est 101
Version du serveur : 5.5.24-8-log (Debian)

Droit d'auteur (c) 2000, 2011, Oracle et/ou ses filiales. Tous droits réservés.

Oracle est une marque déposée d’Oracle Corporation et/ou de ses
filiales. D’autres noms peuvent être des marques de leurs propriétaires respectifs.

Tapez 'help;' ou '\h' pour obtenir de l'aide. Tapez '\c' pour effacer l'instruction d'entrée actuelle.
mysql>

Tapez

quit;

pour quitter le shell MySQL.

Nous arrivons maintenant à la partie où nous configurons phpMyAdmin - je suppose que vous pouvez déjà utiliser phpMyAdmin pour vous connecter au serveur MySQL local, et maintenant nous voulons le configurer afin que nous puissions également nous connecter à remote.example.com en utilisant SSL (sur l’écran de connexion de phpMyAdmin, il y aura un menu déroulant à partir duquel vous pourrez sélectionner le serveur auquel vous souhaitez vous connecter).

Avant que phpMyAdmin puisse utiliser SSL pour communiquer avec le serveur MySQL distant, nous devons modifier un peu ses sources - ouvrez mysqli.dbi.lib.php (sur Debian et Ubuntu, c’est /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php si vous avez installé phpMyAdmin via apt) :

vi /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php

Trouvez la section suivante…

| | [...] /* Activer SSL en option */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |

… et modifiez-la comme suit :

| | [...] /* Activer SSL en option */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { mysqli_ssl_set($link, $GLOBALS['cfg']['Server']['key'], $GLOBALS['cfg']['Server']['cert'], $GLOBALS['cfg']['Server']['ca'], $GLOBALS['cfg']['Server']['capath'], $GLOBALS['cfg']['Server']['cipher']); $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |

Ensuite, ouvrez config.inc.php - si vous êtes sur Debian/Ubuntu et avez installé phpMyAdmin via apt, c’est /etc/phpmyadmin/config.inc.php :

vi /etc/phpmyadmin/config.inc.php 

Trouvez la section suivante :

| | [...] /* Configurez selon dbconfig-common si activé */ if (!empty($dbname)) { /* Type d'authentification */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Paramètres du serveur */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Sélectionnez mysqli si votre serveur l'a */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Optionnel : Utilisateur pour des fonctionnalités avancées */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Optionnel : Fonctionnalités avancées de phpMyAdmin */ $cfg['Servers'][$i]['pmadb'] = $dbname; $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]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Décommentez ce qui suit pour activer la connexion à des comptes sans mot de passe, * après avoir pris note des risques de sécurité associés. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Passez au serveur suivant pour le reste de la configuration */ $i++; } [...] | |

Ajoutez la section suivante en dessous pour localhost (= local.example.com) :

| | [...] /* localhost.example.com */ /* Type d'authentification */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Paramètres du serveur */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Sélectionnez mysqli si votre serveur l'a */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |

(Dans la ligne $cfg[‘Servers’][$i][‘hide_db’], vous pouvez spécifier toutes les bases de données que vous ne souhaitez pas afficher dans phpMyAdmin - comme information_schema, performance_schema et test.)

Et pour remote.example.com, ajoutez la section suivante :

| | [...] /* remote.example.com */ /* Type d'authentification */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Paramètres du serveur */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Sélectionnez mysqli si votre serveur l'a */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |

Assurez-vous d’utiliser mysqli dans $cfg[‘Servers’][$i][‘extension’], de définir $cfg[‘Servers’][$i][‘ssl’] sur true et de spécifier les fichiers SSL comme indiqué. Ma section complète des serveurs ressemble à ceci :

| | [...] /* Configurez selon dbconfig-common si activé */ if (!empty($dbname)) { /* Type d'authentification */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Paramètres du serveur */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Sélectionnez mysqli si votre serveur l'a */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Optionnel : Utilisateur pour des fonctionnalités avancées */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Optionnel : Fonctionnalités avancées de phpMyAdmin */ $cfg['Servers'][$i]['pmadb'] = $dbname; $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]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Décommentez ce qui suit pour activer la connexion à des comptes sans mot de passe, * après avoir pris note des risques de sécurité associés. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Passez au serveur suivant pour le reste de la configuration */ $i++; } /* localhost.example.com */ /* Type d'authentification */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Paramètres du serveur */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Sélectionnez mysqli si votre serveur l'a */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* remote.example.com */ /* Type d'authentification */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Paramètres du serveur */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Sélectionnez mysqli si votre serveur l'a */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* Fin de la configuration des serveurs */ [...] | |

C’est tout - sur l’écran de connexion de phpMyAdmin, il devrait maintenant y avoir un menu déroulant à partir duquel vous pouvez sélectionner le serveur MySQL auquel vous souhaitez vous connecter (localhost ou remote.example.com), et si vous sélectionnez un serveur MySQL distant (comme remote.example.com), phpMyAdmin s’y connectera via une connexion SSL.

4 Liens

À propos de l’auteur

Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le responsable principal de HowtoForge (depuis 2005) et l’un des développeurs principaux d’ISPConfig (depuis 2000). Il a également contribué au livre d’O’Reilly “Administration système Linux”.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.