Installation

phpMyAdmin n’applique pas de méthodes de sécurité particulières au serveur de données MySQL. Il appartient toujours à l’administrateur système d’accorder les autorisations adéquates sur les bases de données MySQL. La page Utilisateurs de phpMyAdmin peut être utilisée pour cela.

Avertissement

Note pour les utilisateurs Mac ayant une version antérieure à Mac OS X, Stuffit décompresse au format Mac. Vous devrez donc convertir, tout comme dans BBEdit, au format Unix TOUS les scripts phpMyAdmin avant de les transférer sur votre serveur, car PHP ne semble pas apprécier les caractères de fin de ligne au format Mac (« ``r`` »).

Distributions Linux

phpMyAdmin est fourni dans la plupart des distributions Linux. Il est recommandé d’utiliser les paquets de la distribution quand c’est possible - phpMyAdmin est généralement intégré dans votre distribution et les mises à jour de sécurité seront alors disponibles automatiquement.

Debian

Les dépôts des paquets Debian contiennent le paquet phpMyAdmin, mais le fichier de configuration maintenu dans /etc/phpmyadmin peut être différent de celui de la documentation officielle de phpMyAdmin. Plus spécifiquement il permet :

Voir aussi

Plus d’informations disponibles dans README.Debian (il est installé sous /usr/share/doc/phmyadmin/README.Debian avec le paquet).

OpenSUSE

OpenSUSE contient déjà le paquet phpMyAdmin. Installez-le à partir du Service openSUSE Build.

Ubuntu

Ubuntu contient le paquet phpMyAdmin, cependant, si vous voulez utiliser la dernière version, vous pouvez utiliser le paquet du dépôt PPA de phpMyAdmin.

Voir aussi

Les paquets sont les mêmes que ceux de Debian. Veuillez consulter la documentation ici pour plus de détails.

Gentoo

Gentoo fournit la paquet phpMyAdmin, dans une configuration webapp-config. Utilisez emerge dev-db/phpmyadmin pour l’installer.

Mandriva

Mandriva fournit le paquet phpMyAdmin dans la branche contrib et peut être installé dans le Centre de contrôle.

Fedora

Fedora fournit le paquet phpMyAdmin, mais le fichier de configuration maintenu dans /etc/phpMyAdmin/ peut être différent de celui de la documentation officielle de phpMyAdmin.

Red Hat Enterprise Linux

Red Hat Enterprise Linux et ses dérivés comme CentOS ne fournissent pas phpMyAdmin, mais le dépôt Fedora Extra Packages for Enterprise Linux (EPEL) le fait, s’il est activé. Gardez à l’esprit que le fichier de configuration maintenu dans /etc/phpMyAdmin/ peut différer de la version officielle dans la documentation de phpMyAdmin.

Installation sur Windows

La manière la plus simple d’installer phpMyAdmin sous Windows est d’utiliser des produits tierces qui contiennent phpMyAdmin ainsi que le serveur de base de données et le serveur Web, comme XAMPP.

Vous pouvez trouver d’autres options sur la page Wikipedia.

Installation à partir de Git

Vous pouvez cloner les sources actuelles de phpMyAdmin à partir de https://github.com/phpmyadmin/phpmyadmin.git :

git clone https://github.com/phpmyadmin/phpmyadmin.git

De plus, vous devez installer les dépendances en utilisant l’outil Composer :

composer update

Si vous ne comptez pas faire de développement, vous pouvez passer l’installation des outils développeurs en invoquant :

composer update --no-dev

Installation au moyen de Composer

Vous pouvez installer phpMyAdmin au moyen de l’outil Composer, cependant ce n’est pas encore disponible dans le référentiel par défaut Packagist en raison de ses limitations techniques.

L’installation est possible en ajoutant notre propre référentiel <https://www.phpmyadmin.net/packages.json> :

composer create-project phpmyadmin/phpmyadmin --repository-url=https://www.phpmyadmin.net/packages.json --no-dev

Installation au moyen de Docker

phpMyAdmin fournit une image Docker que vous pouvez facilement déployer. Vous pouvez la télécharger en utilisant :

docker pull phpmyadmin/phpmyadmin

Le serveur phpMyAdmin sera exécuté sur le port 80. Il gère plusieurs moyens pour configurer le lien vers le serveur de base de données, soit par la fonctionnalité de lien de Docker, en liant votre conteneur de base de données à db pour phpMyAdmin (en indiquant --link votre_serveur_de_base_de_données:db) ou par les variables d’environnement (dans ce cas, il vous appartient de paramétrer la partie réseau dans Docker pour permettre au conteneur de phpMyAdmin d’accéder au conteneur de base de données par le réseau).

Variables d’environnement Docker

Vous pouvez configurer plusieurs fonctionnalités de phpMyAdmin en utilisant les variables d’environnement :

PMA_ARBITRARY

Permet de saisir le nom du serveur de base de données sur le formulaire de connexion.

PMA_HOST

Le nom d’hôte ou l’adresse IP du serveur de base de données à utiliser.

PMA_HOSTS

Une liste de noms d’hôtes ou d’adresses IP de serveurs de base de données à utiliser.

Note

Utilisé seulement si PMA_HOST est vide.

PMA_VERBOSE

Nom complet du serveur de base de données.

PMA_VERBOSES

Une liste de noms d’hôtes complets, séparés par des virgules, de serveurs de base de données.

Note

Utilisé seulement si PMA_VERBOSE est vide.

PMA_USER

Le nom d’utilisateur à utiliser pour Mode d’authentification par configuration.

PMA_PASSWORD

Mot de passe à utiliser pour Mode d’authentification par configuration.

PMA_PORT

Port du serveur de base de données à utiliser.

PMA_ABSOLUTE_URI

Le chemin complet (https://pma.exemple.net/) où le reverse proxy rend phpMyAdmin disponible.

Par défaut, Mode d’authentification par « cookie » est utilisé, mais si PMA_USER et PMA_PASSWORD sont définis, Mode d’authentification par configuration est utilisé.

Note

Les identifiants nécessaires pour se connecter sont stockés dans le serveur MySQL. En cas d’utilisation d’une image Docker, il existe divers moyens pour les définir (par exemple, MYSQL_ROOT_PASSWORD en démarrant le conteneur MySQL). Veuillez consulter la documentation pour conteneur MariaDB ou conteneur MySQL.

Personnalisation de la configuration

Une configuration additionnelle peut être effectuée dans /etc/phpmyadmin/config.user.inc.php. Si ce fichier existe, il sera chargé après la configuration générée à partir des variables d’environnement ci-dessus, vous pouvez donc écraser toute variable de configuration. Cette configuration peut être ajoutée en tant que volume en invoquant Docker en utilisant les paramètres -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php.

Noter que le fichier de configuration fourni est appliqué après Variables d’environnement Docker, mais que n’importe quelle valeur peut être écrasée.

Par ex. pour modifier le comportement par défaut de l’exportation en CSV, il est possible d’utiliser le fichier de configuration suivant :

<?php
$cfg['Export']['csv_columns'] = true;

Voir aussi

Voir Configuration pour une description détaillée des options de configuration.

Volumes Docker

Vous pouvez utiliser les volumes suivants pour personnaliser le comportement de l’image :

/etc/phpmyadmin/config.user.inc.php

Peut être utilisé pour des réglages supplémentaires, voir le chapitre précédent pour plus de détails.

/sessions/

Répertoire où sont stockées les sessions PHP. Vous pouvez partager cela, par exemple, lorsque vous utilisez Mode d’authentification ‘signon’.

Exemples Docker

Pour connecter phpMyAdmin sur un serveur donné, utiliser :

docker run --name myadmin -d -e PMA_HOST=dbhost -p 8080:80 phpmyadmin/phpmyadmin

Pour connecter phpMyAdmin à plusieurs serveurs, utiliser :

docker run --name myadmin -d -e PMA_HOSTS=dbhost1,dbhost2,dbhost3 -p 8080:80 phpmyadmin/phpmyadmin

Pour utiliser l’option de serveur arbitraire :

docker run --name myadmin -d --link mysql_db_server:db -p 8080:80 -e PMA_ARBITRARY=1 phpmyadmin/phpmyadmin

Vous pouvez aussi lier le conteneur de base de données utilisant Docker :

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 phpmyadmin/phpmyadmin

Exécution avec une configuration additionnelle :

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin/phpmyadmin

Utiliser docker-compose

Vous pouvez aussi utiliser docker-compose avec docker-compose.yml à partir de <https://github.com/phpmyadmin/docker>. Ceci exécutera phpMyAdmin avec un serveur arbitraire - permettant de spécifier le serveur MySQL/MariaDB server sur la page de connexion.

docker-compose up -d

Personnalisation du fichier de configuration à l’aide de docker-compose

Il est possible d’utiliser un fichier externe pour personnaliser la configuration de phpMyAdmin et le passer à l’aide d’une directive volumes :

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
     - PMA_ARBITRARY=1
    restart: always
    ports:
     - 8080:80
    volumes:
     - /sessions
     - ~/docker/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php

En exécution derrière haproxy dans un sous-répertoire

Pour exposer phpMyAdmin exécuté dans un conteneur Docker depuis un sous-répertoire, il faut réécrire le chemin de requête du serveur mandatant les requêtes. Par ex., à l’aide de haproxy, cela peut être fait comme suit :

frontend http
    bind *:80
    option forwardfor
    option http-server-close

    ### NETWORK restriction
    acl LOCALNET  src 10.0.0.0/8 192.168.0.0/16 172.16.0.0/12

    # /phpmyadmin
    acl phpmyadmin  path_dir /phpmyadmin
    use_backend phpmyadmin if phpmyadmin LOCALNET

backend phpmyadmin
    mode http

    reqirep  ^(GET|POST|HEAD)\ /phpmyadmin/(.*)     \1\ /\2

    # phpMyAdmin container IP
    server localhost     172.30.21.21:80

Puis il faudrait spécifier PMA_ABSOLUTE_URI dans la configuration docker-compose :

version: '2'

services:
  phpmyadmin:
    restart: always
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    hostname: phpmyadmin
    domainname: example.com
    ports:
      - 8000:80
    environment:
      - PMA_HOSTS=172.26.36.7,172.26.36.8,172.26.36.9,172.26.36.10
      - PMA_VERBOSES=production-db1,production-db2,dev-db1,dev-db2
      - PMA_USER=root
      - PMA_PASSWORD=
      - PMA_ABSOLUTE_URI=http://example.com/phpmyadmin/

Installation rapide

  1. Choisissez l’archive appropriée sur la page de téléchargement de phpmyadmin.net. Certaines archives ne contiennent que les messages en anglais, d’autres les messages pour toutes les langues au format UTF-8 (ce qui devrait suffire dans la plupart des cas), d’autres les messages pour toutes les langues et tous les jeux de caractères. Nous supposerons que vous avez choisi une archive dont le nom est de la forme phpMyAdmin-x.x.x-all-languages.tar.gz.

  2. Assurez-vous d’avoir téléchargé une archive authentique, voir Vérification d’intégrité de phpMyAdmin.

  3. « Détarrez » (.tar) ou « dézippez » (.zip) la distribution (assurez-vous de conserver l’arborescence des sous-répertoires) : tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz à la racine de votre serveur web. Si vous n’avez pas d’accès directement à la racine du serveur, mettez les fichiers dans un répertoire de votre ordinateur local, et, après l’étape 4, transférez le répertoire sur votre serveur web en utilisant, par exemple, le protocole ftp.

  4. Assurez-vous que tous les scripts aient le propriétaire adéquat (si PHP fonctionne en mode sécurisé, avoir des scripts avec un propriétaire différent de celui des autres posera un problème). Voir la section 4.2 Quel est le meilleur moyen de sécuriser phpMyAdmin contre les attaques malicieuses ? et 1.26 Je viens d’installer phpMyAdmin dans le document racine de IIS mais j’obtiens l’erreur « Le fichier spécifié est introuvable » quand j’essaie d’exécuter phpMyAdmin. pour des suggestions.

  5. Vous devez maintenant configurer votre installation. Deux méthodes peuvent être utilisées. Traditionnellement, les utilisateurs ont une copie modifiée manuellement du fichier config.inc.php, mais un script d’installation de type assistant d’installation est maintenant fourni pour ceux qui préfèrent une installation graphique. Créer un fichier config.inc.php demeure néanmoins un moyen rapide pour démarrer et nécessaire pour certaines fonctionnalités avancées.

Création manuelle du fichier

Pour créer manuellement le fichier, utiliser un éditeur de texte pour créer le fichier config.inc.php (il est possible de copier le fichier config.sample.inc.php`pour obtenir un fichier de configuration minimal) dans le répertoire principal de phpMyAdmin (celui qui contient le fichier ``index.php`). phpMyAdmin charge tout d’abord le fichier libraries/config.default.php`puis écrase ces valeurs avec celles trouvées dans le fichier :file:`config.inc.php. Si la valeur par défaut convient pour un paramètre particulier, il n’est pas nécessaire de l’inclure dans le fichier config.inc.php. Il faudra alors probablement besoin de quelques directives pour continuer. Une configuration simple peut ressembler à ceci :

<?php
// use here a value of your choice at least 32 chars long
$cfg['blowfish_secret'] = '1{dd0`<Q),5XP_:R9UK%%8\"EEcyH#{o';

$i=0;
$i++;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
// if you insist on "root" having no password:
// $cfg['Servers'][$i]['AllowNoPasswordRoot'] = true; `
?>

Ou, si vous préférez ne pas avoir d’invite de connexion à chaque fois :

<?php

$i=0;
$i++;
$cfg['Servers'][$i]['user']          = 'root';
$cfg['Servers'][$i]['password']      = 'cbb74bc'; // use here your password
$cfg['Servers'][$i]['auth_type']     = 'config';
?>

Avertissement

Le stockage des mots de passe dans la configuration n’est pas sûr car n’importe qui peut alors manipuler votre base de données.

Pour une explication complète de toutes les valeurs de configuration possibles, veuillez consulter la section Configuration de ce document.

Utilisation du script d’installation

Au lieu de modifier manuellement le fichier config.inc.php, il est possible d’utiliser le script d’installation de phpMyAdmin. Le fichier peut être généré depuis le script d’installation, puis téléchargé pour être transféré vers le serveur.

Ensuite ouvrir le navigateur et aller à l’emplacement où phpMyAdmin est installé, avec le suffixe /setup. Les modifications ne sont pas enregistrées sur le serveur, il faut utiliser le bouton :guilabel:`Download`pour les enregistrer localement pour les transférer ensuite vers le serveur.

Maintenant, le fichier est prêt à être utilisé. Vous pouvez choisir de vérifier ou modifier le fichier de configuration avec votre éditeur favori, si vous préférez définir des options avancées que le script d’installation de permet pas de faire.

  1. Si vous utilisez la méthode d’authentification « config », il est recommandé de protéger le répertoire d’installation de phpMyAdmin parce-qu’avec ce type d’authentification, un utilisateur n’a pas besoin de saisir de mot de passe pour y accéder. Nous recommandons d’utiliser une méthode d’authentification alternative, telle que HTTP-AUTH dans un fichier .htaccess ou de passer sur une authentification de type cookie ou HTTP. Voir la FAI et installation multi-utilisateurs, plus particulièrement 4.4 phpMyAdmin donne toujours « Accès refusé » en utilisant l’authentification HTTP. pour plus d’informations.

  2. Ouvrez le répertoire principal de phpMyAdmin dans votre navigateur. phpMyAdmin devrait maintenant afficher un écran de bienvenue et vos bases de données, ou une boîte de dialogue de connexion si vous utilisez le mode HTTP ou le mode d’authentification par cookie.

Script de paramétrage sous Debian, Ubuntu et dérivés

Debian et Ubuntu ont modifié la façon dont le paramétrage est activé ou désactivé, de sorte qu’une seule ligne de commande doit être exécutée pour chacun d’eux.

Pour permettre la modification de la configuration, exécuter :

/usr/sbin/pma-configure

Pour bloquer la modification de la configuration, exécuter :

/usr/sbin/pma-secure

Script d’installation pour openSUSE

Certaines versions d’openSUSE ne contiennent pas le script de configuration dans le paquet. Si vous voulez générer la configuration, vous pouvez télécharger le paquet d’origine sur <https://www.phpmyadmin.net/> ou utiliser le script de notre serveur de démonstration : <https://demo.phpmyadmin.net/STABLE/setup/>.

Vérification d’intégrité de phpMyAdmin

Depuis juillet 2015, toutes les versions de phpMyAdmin sont signées avec une clé par le développeur qui effectue la publication, qui jusqu’à janvier 2016 était Marc Delisle. Son identifiant de clef est 0xFEFC65D181AF644A, son empreinte de clé PGP est la suivante :

436F F188 4B1A 0C3F DCBF 0D79 FEFC 65D1 81AF 644A

et vous pouvez obtenir plus d’informations sur l’identification sur <https://keybase.io/lem9>.

À compter de janvier 2016, le gestionnaire de publication est Isaac Bennetch. Son ID de clé est 0xCE752F178259BD92,et son empreinte PGP est :

3D06 A59E CE73 0EB7 1B51 1C17 CE75 2F17 8259 BD92

et vous pouvez obtenir plus d’informations sur l’identification sur <https://keybase.io/ibennetch>.

D’autres téléchargements supplémentaires (comme les thèmes) doivent être signés par Michal Čihař. Sa clé d’identification est 0x9C27B31342B7511D, et son empreinte PGP est :

63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D

et vous pouvez obtenir plus d’informations sur l’identification sur <https://keybase.io/nijel>.

Vous devriez vérifier que la signature correspond à l’archive que vous avez téléchargée. De cette façon vous pouvez être sûr que vous utilisez le même code qui a été publié. Vous devriez aussi vérifier la date de la signature pour être sûr que vous avez téléchargé la dernière version.

Chaque archive est accompagné de fichiers .asc qui contiennent la signature PGP pour celle-ci. Une fois que vous avez ces deux fichiers dans le même dossier, vous pouvez vérifier la signature :

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Can't check signature: public key not found

Comme vous pouvez le voir gpg se plaint qu’il ne connaît pas la clé publique. À ce stade, vous devriez faire une des étapes suivantes :

$ gpg --import phpmyadmin.keyring
  • Télécharger et importer la clé de l’un des serveurs principaux :

$ gpg --keyserver hkp://pgp.mit.edu --recv-keys 3D06A59ECE730EB71B511C17CE752F178259BD92
gpg: requesting key 8259BD92 from hkp server pgp.mit.edu
gpg: key 8259BD92: public key "Isaac Bennetch <bennetch@gmail.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Ceci améliorera la situation un peu - à ce stade, vous pouvez vérifier que la signature de la clé donnée est correcte, mais vous ne pouvez toujours pas faire confiance au nom utilisé dans la clé :

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Good signature from "Isaac Bennetch <bennetch@gmail.com>"
gpg:                 aka "Isaac Bennetch <isaac@bennetch.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 3D06 A59E CE73 0EB7 1B51  1C17 CE75 2F17 8259 BD92

Le problème ici est que tout le monde pouvait délivrer la clé portant ce nom. Vous devez vous assurer que la clé est actuellement détenue par la personne mentionnée. Le GNU Privacy Handbook couvre ce sujet dans le chapitre Validating other keys on your public keyring. La méthode la plus fiable est de rencontrer le développeur en personne et de procéder à l’échange des empreintes digitales de clé, cependant vous pouvez également compter sur la toile de confiance. De cette façon vous pouvez faire confiance à la clé de manière transitive au moyen des signatures des autres personnes, qui ont rencontré le développeur en personne. Par exemple, vous pouvez voir comment la clé d’Isaac est liée à celle de Linus.

Une fois que la clé est approuvée, l’avertissement ne s’affichera plus :

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Good signature from "Isaac Bennetch <bennetch@gmail.com>" [full]

Si la signature était invalidée (l’archive a été changée), vous obtiendriez une erreur manifeste indépendamment du fait que la clé est approuvée ou non :

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: BAD signature from "Isaac Bennetch <bennetch@gmail.com>" [unknown]

Configuration de stockage de phpMyAdmin

Modifié dans la version 3.4.0: Avant phpMyAdmin 3.4.0, ceci était appelé Infrastructure de tables liées, mais le nom a été changé en raison de la couverture étendue du stockage.

Si vous voulez bénéficier d’une série de nouveautés (Signets, commentaires, historique SQL, mécanisme de suivi, génération de PDF, Transformations, Relations , etc.), vous devrez créer un ensemble de tables spéciales. Ces tables peuvent se trouver dans votre propre base de données, ou dans une base de données centrale pour une installation multi-utilisateurs (cette base de données serait alors accédée par le controluser, aussi, aucun autre utilisateur ne devrait avoir de droits sur celle-ci).

Zéro configuration

La plusieurs cas, cette structure de base de données peut être automatiquement créer et configurer. Ce mode est appelé ” Zero Configuration ” et il peut être utile pour partagé dans les situations d’hébergement partagé. Par défaut, le mode “Zeroconf” est activé, pour le désactiver fixer $cfg['ZeroConf'] à “false”.

Les trois scénarios suivants traitent du mode Zéro configuration :

  • Lors de l’ouverture d’une base de données dans laquelle les tables de stockage ne sont pas présentes, phpMyAdmin propose de les créer à partir de l’onglet Opérations.

  • Lors de l’ouverture d’une base de données dans laquelle les tables existent déjà, le logiciel le détecte automatiquement et commence à les utiliser. C’est la situation la plus courante ; après la création initiale automatique des tables, elles sont utilisées continuellement sans déranger l’utilisateur. Ceci est très utilise sur un hébergement partagé où l’utilisateur ne peut pas éditer le fichier config.inc.php et d’habitude, l’utilisateur n’a accès qu’à une seule base de données.

  • Lorsqu’il y a plusieurs bases de données, si l’utilisateur ouvre d’abord la base contenant les tables de stockage puis change de base de données, phpMyAdmin continue à utiliser les tables de la première base. L’utilisateur n’est pas invité à créer d’autres tables dans la nouvelle base.

Configuration manuelle

Veuillez regarder dans votre répertoire ./sql/, où vous devriez trouver un fichier du nom de create_tables.sql. (Si vous utilisez un serveur Windows, portez une attention particulière à la partie 1.23 J’exécute MySQL sur une machine Win32. Chaque fois que je crée une nouvelle table, les noms de la table et des colonnes sont convertis en lettres minuscules !).

Si vous aviez déjà cette infrastructure et :

  • mis à jour vers MySQL 4.1.2 ou supérieur, veuillez utiliser le fichier sql/upgrade_tables_mysql_4_1_2+.sql.

  • mis à jour phpMyAdmin en version 4.3.0 ou supérieur depuis 2.5.0 ou supérieur (<= 4.2.x), veuillez utiliser sql/upgrade_column_info_4_3_0+.sql.

  • mis à jour vers phpMyAdmin 4.7.0 ou plus récent à partir de 4.3.0 ou plus récent, veuillez utiliser sql/upgrade_tables_4_7_0+.sql.

puis créer de nouvelles tables en important sql/create_tables.sql.

Vous pouvez d’ores et déjà utiliser phpMyAdmin qui créera les tables pour vous. Soyez conscient que vous pouvez avoir besoin de privilèges spéciaux (administrateur) pour créer la base de données et les tables, et que le script peut avoir besoin de quelques ajustements en fonction du nom de la base de données.

Après avoir importé le fichier ./sql/create_tables.sql, il faudra spécifier le nom des tables dans le fichier ./config.inc.php. Les directives à utiliser pour cela sont dans la section Configuration.

Il vous faudra également un utilisateur de contrôle ($cfg['Servers'][$i]['controluser'] et/ou $cfg['Servers'][$i]['controlpass'] possédant les droits appropriés sur ces tables. Vous pouvez le créer au moyen de l’énoncé suivant :

GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost'  IDENTIFIED BY 'pmapass';

Mise à jour à partir d’une précédente version :

Avertissement

Ne jamais extraire une nouvelle version de phpMyAdmin par-dessus une version déjà existante. Toujours supprimer d’abord les anciens fichiers en ne conservant que la configuration.

De cette manière, vous ne laisserez plus de code non fonctionnel dans le répertoire, ce qui peut avoir de sérieuses implications de sécurité et provoquer divers dysfonctionnements.

Copiez simplement le fichier config.inc.php de votre installation précédente dans la nouvelle installation. Les fichiers de configuration de très anciennes versions (2.3.0 ou précédentes) peuvent nécessiter des ajustements car certaines options ont été modifiées ou supprimés. Pour une compatibilité avec PHP 5.3 et plus, supprimez une déclaration set_magic_quotes_runtime(0); que vous pourriez trouver à la fin de votre fichier de configuration.

Vous ne devez pas copier libraries/config.default.php par dessus config.inc.php car le fichier de configuration par défaut est spécifique à chaque version.

La mise à jour complète peut être effectuée en quelques étapes simples :

  1. Télécharger la dernière version de phpMyAdmin sur <https://www.phpmyadmin.net/downloads/>.

  2. Renommer le répertoire existant de phpMyAdmin (par exemple en phpmyadmin-old).

  3. Décompresser le paquet phpMyAdmin dans l’emplacement désiré (par exemple phpmyadmin).

  4. Copier le fichier config.inc.php` de l’ancien répertoire (phpmyadmin-old) vers le nouveau (phpmyadmin).

  5. Tester que tout fonctionne correctement.

  6. Supprimer la sauvegarde de l’ancienne version (phpmyadmin-old).

Si vous avez mis à jour votre serveur MySQL d’une version plus ancienne que la 4.1.2 vers une version 5.x ou supérieure et que vous utilisez la configuration de stockage de phpMyAdmin, vous devez exécuter le script SQL suivant : sql/upgrade_tables_mysql_4_1_2+.sql.

Si vous avez mis à jour phpMyAdmin en version 4.3.0 ou supérieur à depuis 2.5.0 ou supérieur (<= 4.2.x) et si vous utilisez la configuration de stockage de phpMyAdmin, vous devez exécuter le script SQL qui se trouve dans sql/upgrade_column_info_4_3_0+.sql.

Ne pas oublier de vider le cache du navigateur et l’ancienne session en se déconnectant puis en se reconnectant.

Utiliser les modes d’authentification :

Les authentifications HTTP et par cookies sont recommandées dans un environnement multi-utilisateurs où vous souhaitez que chaque utilisateur n’ait accès qu’à sa propre base de données et n’aille pas trifouiller dans les bases de données des voisins. Néanmoins, sachez que MS Internet Explorer semble avoir une gestion peu fiable des cookies, tout du moins jusqu’à sa version 6. Dans un environnement mono-utilisateur, vous pouvez également souhaiter utiliser une authentification HTTP ou par cookies afin d’éviter de stocker votre nom d’utilisateur / mot de passe en clair dans le fichier de configuration.

Les modes d’authentification HTTP et par cookie sont plus sécurisés : les informations de connexion de MySQL n’ont pas besoin d’être définies dans le fichier de configuration de phpMyAdmin (excepté pour $cfg['Servers'][$i]['controluser']). Cependant, gardez à l’esprit que le mot de passe transite en clair, à moins d’utiliser le protocole HTTPS. Dans le mode cookie, le mot de passe est stocké, chiffré avec l’algorithme AES, dans un cookie temporaire.

Ensuite, un ensemble de privilèges doit être accordé à chaque utilisateur réel sur un ensemble de bases définies. Normalement, vous ne devriez pas donner de privilèges globaux à un utilisateur ordinaire, à moins que vous ne sachiez ce que vous faites (par exemple, si vous créez un super-utilisateur). Par exemple, déléguer à un utilisateur réel tous les privilèges sur la base de données user_base :

GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';

Tout ce que les utilisateurs pourraient faire est entièrement contrôlé par le système de gestion des utilisateurs de MySQL. Avec les modes d’authentification HTTP ou par cookie, vous n’avez pas besoin de renseigner les champs utilisateur/mot de passe dans $cfg['Servers'].

Mode d’authentification HTTP

Note

Il n’existe pas de manière de se déconnecter proprement en utilisant l’authentification HTTP : la plupart des navigateurs retiennent les identifiants jusqu’à ce qu’une nouvelle authentification réussisse avec d’autres identifiants. À cause de cela, cette méthode ne permet pas de se connecter avec le même utilisateur après la déconnexion.

Mode d’authentification ‘signon’

  • Ce mode est un moyen pratique pour utiliser les informations d’identification provenant d’une autre application pour s’authentifier dans phpMyAdmin en utilisant l’authentification unique.

  • L’autre application a besoin de stocker les informations de connexion dans les données de session (consulter $cfg['Servers'][$i]['SignonSession']`et :config:option:`$cfg['Servers'][$i]['SignonCookieParams']) ou vous devez mettre en œuvre un script pour renvoyer les crédentiels (consulter $cfg['Servers'][$i]['SignonScript']).

  • Quand aucun identifiant de connexion n’est disponible, l’utilisateur est redirigé vers $cfg['Servers'][$i]['SignonURL'], où vous pouvez traiter le processus de connexion.

Un exemple très basique pour stocker les identifiants de connexion est disponible : examples/signon.php :

Sinon, vous pouvez aussi utiliser cette solution en utilisant OpenID : examples/openid.php :

Si vous voulez transmettre les identifiants de connexion en utilisant d’autres moyens, vous devrez mettre en œuvre une classe enveloppante (wrapper) en PHP pour obtenir les données et les définir dans $cfg['Servers'][$i]['SignonScript']. Voici un script minimaliste pour cela : examples/signon-script.php :

Mode d’authentification par configuration

  • Ce mode est parfois le moins sécurisé car il requiert de remplir les champs $cfg['Servers'][$i]['user'] et $cfg['Servers'][$i]['password'] (et par conséquent, quiconque peut lire votre fichier config.inc.php peut découvrir votre nom d’utilisateur et votre mot de passe).

  • Dans la section FAI et installation multi-utilisateurs il y a un point expliquant comment protéger votre fichier de configuration.

  • Pour une sécurité supplémentaire dans ce mode, vous devriez considérer les directives de configuration de l’authentification hôte $cfg['Servers'][$i]['AllowDeny']['order'] et $cfg['Servers'][$i]['AllowDeny']['rules'].

  • Contrairement aux modes par cookie et HTTP, l’utilisateur n’a pas besoin de s’authentifier lors du premier chargement du site phpMyAdmin. C’est prévu ainsi, mais cela pourrait permettre à tout utilisateur d’accéder à votre installation. L’utilisation d’une méthode de restriction est recommandée, que ce soit en utilisant un fichier .htaccess avec la directive HTTP-AUTH ou en interdisant les requêtes HTTP entrantes sur le routeur ou le pare-feu (ces deux suggestions n’entrent pas dans les sujets abordés dans ce manuel mais vous pouvez facilement trouver des informations sur ces sujets avec Google).

Sécuriser votre installation de phpMyAdmin

L’équipe de phpMyAdmin essaye tant bien que mal de rendre l’application sûre, cependant, il est toujours possible de la rendre encore plus sûre :

  • Suivez nos annonces de sécurité et mettez à jour phpMyAdmin chaque fois qu’une vulnérabilité est révélée.

  • Utiliser phpMyAdmin en HTTPS seulement. De préférence, utiliser HSTS, pour être protégé des attaques de type « protocol downgrade ».

  • Assure-vous que votre configuration PHP suive les recommandations pour les sites de production, par exemple display_errors doit être désactivé.

  • Supprimez le dossier test de phpMyAdmin, à moins que vous ne développiez et avez besoin de cas de test.

  • Supprimez le dossier setup de phpMyAdmin, vous ne l’utiliserez probablement plus après l’installation initiale.

  • Choisissez la méthode d’authentification appropriée - Mode d’authentification par « cookie » est probablement le meilleur choix dans le cas d’un hébergement mutualisé.

  • Interdisez l’accès aux sous-répertoires ./libraries et ./templates/ de votre serveur Web. Une telle configuration empêche de possibles vulnérabilités de « path exposure » et de « cross side scripting » qui pourraient être découvertes dans le code. Pour le serveur web Apache, la façon de faire habituelle est d’utiliser un fichier .htaccess dans ces répertoires.

  • Il est généralement conseillé de protéger l’installation phpMyAdmin publique contre les accès des robots car ils ne peuvent rien faire de bon en général ici. Vous pouvez faire ceci en utilisant le fichier robots.txt à la racine de votre serveur Web ou en limitant l’accès par la configuration de votre serveur Web, voir 1.42 Comment empêcher les robots d’accéder à phpMyAdmin ?.

  • Si vous ne voulez pas que tous les utilisateurs MySQL puissent accéder à phpMyAdmin, vous pouvez utiliser $cfg['Servers'][$i]['AllowDeny']['rules'] pour les limiter ou $cfg['Servers'][$i]['AllowRoot'] pour refuser l’accès utilisateur root.

  • Envisagez de masquer phpMyAdmin derrière une authentification de serveur mandataire, de sorte que les utilisateurs aient à s’identifier avant de fournir les identifiants MySQL. Pour cela, vous pouvez configurer votre serveur Web pour qu’il nécessite une authentification HTTP. Par exemple, pour Apache, cela peut être réalisé avec :

    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /usr/share/phpmyadmin/passwd
    Require valid-user
    

    Après avoir changé la configuration, il faut créer une liste des utilisateurs qui peuvent s’authentifier. Cela peut être fait en utilisant l’utilitaire htpasswd :

    htpasswd -c /usr/share/phpmyadmin/passwd username
    
  • Si vous craignez les attaques automatisées, l’activation de Captcha au moyen de $cfg['CaptchaLoginPublicKey'] et $cfg['CaptchaLoginPrivateKey'] pourrait être envisageable.

  • Les tentatives de connexion qui ont échouées sont inscrites au journal syslog (si disponible). Cela peut servir à un outil comme fail2ban pour bloquer les attaques par force brute. Noter que le fichier journal utilisé par syslog n’est pas le même que celui des erreurs Apache ou celui journalisant les accès.

Problèmes connus

Les utilisateurs avec des privilèges spécifiques à des colonnes ne peuvent pas utiliser « Parcourir »

Si un utilisateur a des privilèges spécifiques à des colonnes sur certaines (mais pas toutes) colonnes dans une table, « Parcourir » échouera avec un message d’erreur.

Comme moyen de contournement, une requête enregistrée du même nom que la table peut être créée. Elle sera utilisée à la place du lien « Parcourir ». Problème 11922.

Problème de reconnexion après s’être déconnecté en utilisant l’authentification ‘http’

En utilisant auth_type ‘http’, il peut être impossible de se reconnecter (lorsque la déconnexion est faite manuellement ou après une période d’inactivité). Problème 11898.