PhpMyAdmin est une interface web permettant de gérer nos bases de données. Debian nous permet de l’installer directement via ses paquets mais malheureusement la version proposé n’est jamais la dernière et c’est un peu décevant de ne pas profiter des dernières amélioration.
Nous allons donc résoudre ce problème.
Désinstallez le paquet debian phpmyadmin si vous ne l’avez pas encore fait via la commande
aptitude remove phpmyadmin
Télécharger la dernière version de phpmyadmin sur www.phpmyadmin.net
Décompresser le fichier phpMyAdmin-4.0.4-all-languages.tar.gz dans un répertoire (/var/www/phpmyadmin dans l’exemple).
Donnez les droits pour apache2
chown -R www-data.www-data /var/www/phpmyadmin
Créer un répertoire /var/www/phpmyadmin/config et lui donner les droits d’accès 777.
cd phpmyadmin mkdir config chmod o+rw config
Créez un fichier contenant cotre mot de passe
htpasswd /etc/apache2/htpasswd.phpmyadmin admin chmod 644 /etc/apache2/htpasswd.phpmyadmin
Créons la config dans apache2
vi /etc/apache2/sites-available/phpmyadmin
# phpMyAdmin default Apache configuration Alias /phpmyadmin /var/www/phpmyadmin <Directory /var/www/phpmyadmin> #Options FollowSymLinks #DirectoryIndex index.php Options ExecCGI Indexes FollowSymLinks MultiViews AllowOverride All <IfModule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin" AuthUserFile /etc/apache2/htpasswd.phpmyadmin </IfModule> Require valid-user <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> </Directory> # Authorize for setup <Directory /var/www/phpmyadmin/setup> <IfModule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /etc/apache2/htpasswd.phpmyadmin </IfModule> Require valid-user </Directory> # Disallow web access to directories that don't need it <Directory /var/www/phpmyadmin/libraries> Order Deny,Allow Deny from All </Directory> <Directory /var/www/phpmyadmin/setup/lib> Order Deny,Allow Deny from All </Directory>
Activez phpmyadmin dans apache
a2ensite phpmyadmin service apache2 reload
Dans le navigateur de votre choix, utiliser l’URL suivante pour configurer phpMyAdmin :
http://url_ou_ip_du_serveur/phpmyadmin/setup
Une fois votre config sauvegardé, vous n’utiliserez probablement plus ce setup. Soit vous sécurisez l’accès à ce répertoire, soit vous le supprimez.
rm -fr /var/www/phpmyadmin/setup
Copiez le fichier de config que le setup vous a généré et supprimez le répertoire config.
cp config/config.inc.php . chown www-data.www-data config.inc.php chmod o-rw config.inc.php rm -fr config/
Copiez collez la partie suivante du fichier config.sample.inc.php dans votre config.inc.php
/* * phpMyAdmin configuration storage settings. */ /* User used to manipulate with storage */ // $cfg['Servers'][$i]['controlhost'] = ''; // $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'; /* Contrib / Swekey authentication */ // $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';
Et dé-commentez toutes les lignes commençant par un double slash sauf la dernière
Créé un utilisateur pma et renseignez le bon mot de passe.
Allez dans le répertoire examples et exécutez les commandes suivantes.
cd examples # mysql -u root -p < create_tables.sql # mysql -u root -p < upgrade_tables_mysql_4_1_2+.sql
N’oubliez pas de vous déconnecter de phpmyadmin, au mieux de supprimer les cookies et de vous reconnecter pour que votre config soit prise en compte.
Si vous avez installé php avec suhosin et que vous voulez désactivez le message d’avertissement, ajoutez ceci
$cfg['SuhosinDisableWarning'] = true;
Si vous utilisez des Vues (ou Views) dans vos bases de données, phpmyadmin peut devenir très lent à l’ouverture car il cherche à savoir le nombre de données disponible dans une vue.
Pour éviter ce calcul qui selon moi est inutile, ajoutez ceci
$cfg['MaxExactCountViews'] = 0;
Pour activer l’historique des requêtes SQL, ajoutez ceci
$cfg['QueryHistoryDB'] = true; // La longueur de l'historique. Par défaut = 25 $cfg['QueryHistoryMax'] = 100;
Tous les paramètres sont disponibles en français par là ⇒ https://phpmyadmin-french.readthedocs.org/fr/latest/config.html#generic-settings
Après une installation fraiche de phpMyAdmin, voilà à quoi on est confronté à longueur de journée :
Aucune activité depuis 1440 secondes ou plus, veuillez vous reconnecter.
Très énervant.
phpMyAdmin vous déconnecte toutes les 1440 secondes, soit 24min, soit très rapidement.
Donc pour aller vite, trouvez votre config.inc.php et ajoutez ces lignes :
$sessionDuration = 60*60*24*7; ini_set('session.gc_maxlifetime', $sessionDuration); $cfg['LoginCookieValidity'] = $sessionDuration;
Ici on définit une durée d’une semaine.
On affecte cette durée au paramètre d’expiration de session de PHP.
On affecte cette durée au paramètre d’expiration de session de phpMyAdmin.
Parfois ça ne suffit pas… Il faut ajouter ou modifier la ligne suivante dans votre php.ini
session.gc_maxlifetime = <seconds>
Peut être même rajouter cette ligne dans la config phpmyadmin d’Apache dans la section <Directory>
php_admin_value session.gc_maxlifetime <seconds>
— source : http://rorto.wordpress.com/2013/05/29/augmenter-la-duree-de-vie-dune-session-phpmyadmin/
— source : http://www.joho.se/2011/11/07/increasing-the-phpmyadmin-session-timeout/