phpMyAdmin : une interface web pour gérer les BDD SQL

phpMyAdmin est une interface web en PHP pour administrer à distance les SGBD MySQL et MariaDB.

Il permet d'administrer :

les bases de donnéesles tables et leurs champs (ajout, suppression, définition du type)les index, les clés primaires et étrangèresles utilisateurs de la base et leurs permissionsimporter ou exporter les données dans divers formats (CSV, XML, PDF, OpenDocument, Word, Excel et LaTeX)

Pré-requis

Avoir installé :

un SGBD (MySQL ou MariaDB)un serveur web (apache2, lighttpd, nginx) fonctionnelvérifier que les scripts PHP sont correctement interprétés.

Installation

Installez phpmyadmin

USER@MACHINE:~$ sudo apt install {phpmyadmin,}

Lors de l'installation, il vous sera posé quelques questions auxquelles il faut répondre avec soin :

Cochez Créer la base de données phpmyadmin :Décochez les deux options de Serveur web à reconfigurer automatiquement :

La configuration préliminaire est terminée.

Autre méthode

Choisissez l’archive appropriée sur la page de téléchargement de https://www.phpmyadmin.net/ :Nous supposerons que vous avez choisi une archive dont le nom est de la forme phpMyAdmin-x.x.x-all-languages.tar.gz :Décompressez l'archive et transférez le répertoire sur votre serveur web via FTP.

Configuration

Fichier de configuration de phpmyadmin

<?php /** * Debian local configuration file * * This file overrides the settings made by phpMyAdmin interactive setup * utility. * * For example configuration see * /usr/share/doc/phpmyadmin/examples/config.sample.inc.php * or * /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php * * NOTE: do not add security sensitive data to this file (like passwords) * unless you really know what you're doing. If you do, any user that can * run PHP or CGI on your webserver will be able to read them. If you still * want to do this, make sure to properly secure the access to this file * (also on the filesystem level). */ if (!function_exists('check_file_access')) { function check_file_access($path) { if (is_readable($path)) { return true; } else { error_log( 'phpmyadmin: Failed to load ' . $path . ' Check group www-data has read access and open_basedir restrictions.' ); return false; } } } // Load secret generated on postinst if (check_file_access('/var/lib/phpmyadmin/blowfish_secret.inc.php')) { require('/var/lib/phpmyadmin/blowfish_secret.inc.php'); } // Load autoconf local config if (check_file_access('/var/lib/phpmyadmin/config.inc.php')) { require('/var/lib/phpmyadmin/config.inc.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 ''. $i++; /** * Read configuration from dbconfig-common * You can regenerate it using: dpkg-reconfigure -plow phpmyadmin */ if (check_file_access('/etc/phpmyadmin/config-db.php')) { require('/etc/phpmyadmin/config-db.php'); } /* Configure according to dbconfig-common if enabled */ if (!empty($dbname)) { /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Server parameters */ 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; /* Select mysqli if your server has it */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Optional: User for advanced features */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Optional: Advanced phpMyAdmin features */ $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]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $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'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; /* Uncomment the following to enable logging in to passwordless accounts, * after taking note of the associated security risks. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Advance to next server for rest of config */ $i++; } /* Authentication type */ //$cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Server parameters */ //$cfg['Servers'][$i]['host'] = 'localhost'; //$cfg['Servers'][$i]['connect_type'] = 'tcp'; //$cfg['Servers'][$i]['compress'] = false; /* Uncomment the following to enable logging in to passwordless accounts, * after taking note of the associated security risks. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /** * phpMyAdmin configuration storage settings. */ /* User used to manipulate with storage */ // $cfg['Servers'][$i]['controlhost'] = ''; // $cfg['Servers'][$i]['controlport'] = ''; // $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]['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'; // $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; // $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; // $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; /* Contrib / Swekey authentication */ // $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf'; /* * End of servers configuration */ /* * Directories for saving/loading files from server */ $cfg['UploadDir'] = ''; $cfg['SaveDir'] = ''; /* Support additional configurations */ foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) { include($filename); }

Pour activer la connexion à des comptes sans mot de passe, dé-commentez la ligne : /* Uncomment the following to enable logging in to passwordless accounts, * after taking note of the associated security risks. */ $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
Il faut faire comprendre à nginx qu’une nouvelle application est maintenant accessible via le serveur nginx.

Éditez avec les droits d'administration le fichier /etc/nginx/sites-available/phpmyadmin pour y écrire ceci :

server {
listen 81;
server_name localhost;
root /usr/share/phpmyadmin;
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^/(.+)$ /index.php?url=$1 last;
break;
}
location ~ .php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}

Quelques explications : server {…} : bloc « server { … } » (On déclare un nouveau vhost à nginx)listen 81 : L’application web va écouter sur le port non-standard 81 (et non pas 80 comme toutes les applications web traditionnelles). Ce port peut être quelconque, tout en faisant attention que certains ports sont déjà occupés par d’autres services / rôles… ; Cela cloisonne l’application web « site » de l’application « gestion ». Attention, vous devrez sans doute modifier les règles de votre pare-feu / routeur selon votre architecture.server_name localhost : Nom du serveur web. Vous pouvez mettre le nom que vous voulezroot /usr … : L’attribut « root » déclare au serveur web où se trouve l’application dans votre serveur. Pour PHPMyAdmin, les fichiers se situent dans /usr/share/phpmyadmin ;index … : Tous les fichiers déclarés dans cet attributs seront susceptibles de devenir la page d’accueil de votre application, seulement si ces fichiers sont présents dans le dossier de l’application ;Partie « if » : réécriture des liens selon les fichiers / pages demandés ;Partie « Location » : Pour plus d’informations sur cette partie, voir nginx
Ajouter un lien symbolique dans le dossier /etc/nginx/sites-enabled :

USER@MACHINE:~$ sudo ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/phpmyadmin

Redémarrez nginx pour inclure cette nouvelle configuration :

USER@MACHINE:~$ sudo nginx -s reload

Utilisation

Dans votre navigateur web, ouvrez l’adresse de votre serveur web, suivi du port saisi dans le fichier de configuration (dans notre exemple, 81) : http://ip_serveur:81

Désinstallation

Problèmes connus

Voir aussi

(fr) Documentation officielle de phpMyAdmin

Basé sur « Documentation officielle de phpMyAdmin » par phpmyadmin.net.