Bienvenue sur la documentation de phpMyAdmin !

Contenu :

Introduction

phpMyAdmin est un logiciel libre écrit en PHP qui a pour mission de s’occuper de l’administration d’un serveur de base de données MySQL ou MariaDB. Vous pouvez utiliser phpMyAdmin pour réaliser la plupart des tâches d’administration, ceci incluant la création de base de données, l’exécution de demandes, et l’ajout de comptes utilisateur.

Fonctionnalités prises en charge

Actuellement phpMyAdmin peut :

  • créer, parcourir, éditer, et supprimer des bases de données, tables, vues, colonnes, et index
  • afficher des ensembles de résultats multiples depuis des procédures ou des requêtes stockées
  • créer, copier, supprimer, renommer et altérer des bases de données, tables, colonnes et index
  • maintenir un serveur, des bases de données et tables, avec des propositions sur la configuration serveur
  • exécuter, éditer et marquer n’importe quel SQL-déclaration, et même des requêtes par lot
  • charger des fichiers texte dans des tables
  • créer [1] et lire les listages de tables
  • exporter des données [1] en divers formats : CSV, XML, PDF, ISO/IEC 26300 - OpenDocument (texte et feuille de calculs), Microsoft Word 2000, et LATEX
  • importer des données et des structures MySQL depuis des fichiers OpenDocument (feuille de calculs), et aussi XML, CSV et SQL
  • administrer plusieurs serveurs
  • ajouter, éditer, et supprimer des comptes utilisateurs MySQL et des privilèges
  • vérifier l’intégrité référentielle des tables MyISAM
  • créer des graphiques PDF de la structure des bases de données
  • rechercher globalement dans (un sous-ensemble d”)une base de données
  • transformer les données stockées en n’importe quel format selon un jeu de fonctions prédéfinies, comme d’afficher des données BLOB en image ou en lien de téléchargement
  • suivre les modifications dans les bases de données, tables et vues
  • prendre en charge les tables InnoDB et les clés étrangères
  • prendre en charge mysqli, l’extension MySQL améliorée, voir 1.17 Quelles versions de bases de données sont gérées par phpMyAdmin ?
  • créer, éditer, appeler, exporter et supprimer des procédures et fonctions stockées
  • créer, éditer, exporter et supprimer des évènements et déclencheurs
  • communiquer en 80 langues différentes

Raccourcis clavier

Actuellement, phpMyAdmin prend en charge les raccourcis clavier suivants :

  • k - Afficher/Masquer la console
  • h - Aller à la page d’accueil
  • s- Ouvrir les paramètres
  • d + s - Aller à la structure de base de données (si dans une page relative à la base de données)
  • d + f - Rechercher dans la base de données (si dans une page relative à la base de données)
  • t + s - Aller à la structure de table (si dans une page relative à la table)
  • t + f - Rechercher dans la table (si dans une page relative à la table)
  • backspace - Retourner à la page précédente.

Un mot sur les utilisateurs

Beaucoup de personnes ont des difficultés à comprendre le concept de gestion des utilisateurs dans phpMyAdmin. Quand un utilisateur se connecte à phpMyAdmin, son nom d’utilisateur et mot de passe sont passés directement à MySQL. phpMyAdmin ne gère aucun compte utilisateur lui-même (à part permettre de manipuler les informations des comptes utilisateurs de MySQL) ; tous les utilisateurs doivent être des utilisateurs MySQL valides.

Notes de bas de page

[1](1, 2) phpMyAdmin peut compresser les listages (formats ZIP, GZip ou RFC 1952) et les exportations CSV si PHP prend en charge Zlib (--with-zlib). La prise en charge complète pourrait aussi nécessiter des modifications dans le fichier php.ini.

Prérequis

Serveur Web

Étant donné que l’interface de phpMyAdmin est entièrement orientée navigateur, vous devrez avoir à votre disposition un serveur web (tels Apache, nginx, IIS) sur lequel installer les fichiers de phpMyAdmin.

PHP

  • Vous devez disposer de PHP 8.1.2 ou d’une version plus récente, avec la prise en charge de session, l’extension Standard PHP Library (SPL), la prise en charge de hash, ctype et JSON.
  • L’extension mbstring (voir mbstring) est fortement recommandée pour des raisons de performances.
  • Pour pouvoir télécharger des fichiers ZIP vers le serveur, vous avez besoin de l’extension PHP zip.
  • Vous avez besoin du module GD2 dans PHP pour afficher des vignettes intégrées de fichiers JPEG (« image/jpeg:inline ») avec le rapport hauteur / largeur original.
  • Pour utiliser la méthode d’authentification par « cookie » (par défaut), l’extension openssl est fortement recommandée.
  • Pour le support de la barre de progression lors du téléchargement des fichiers vers le serveur, voir 2.9 Afficher les barres de progression d’upload.
  • Pour gérer l’importation de XML et de feuille de tableur Open Document, vous avez besoin de l’extension libxml.
  • Pour supporter reCAPTCHA, vous avez besoin de l’extension openssl.
  • Pour gérer l’affichage de la dernière version de phpMyAdmin, vous devez activer allow_url_open dans votre fichier php.ini ou avoir l’extension curl.

Base de données

phpMyAdmin prend en charge les bases de données compatibles MySQL.

  • MySQL 5.5 ou supérieur
  • MariaDB 5.5 ou supérieur

Navigateur

Pour accéder à phpMyAdmin, vous devez utiliser un navigateur acceptant les cookies et exécutant le JavaScript.

Vous devez avoir un navigateur supporté par Bootstrap 4.5, voir <https://getbootstrap.com/docs/4.5/getting-started/browsers-devices/>.

Modifié dans la version 5.2.0: Vous devez avoir un navigateur supporté par Bootstrap 5.0, voir <https://getbootstrap.com/docs/5.0/getting-started/browsers-devices/>.

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.

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 et Ubuntu

La plupart des versions de Debian et Ubuntu incluent un 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 :

Des détails plus spécifiques sur l’installation des paquets Debian ou Ubuntu sont disponibles dans notre wiki.

Voir aussi

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

OpenSUSE

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

Gentoo

Gentoo fourni le paquet phpMyAdmin, aussi bien dans une configuration proche du stock que dans une configuration webapp-config. Utilisez emerge dev-db/phpmyadmin pour 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 itself and thus derivatives like CentOS don’t ship phpMyAdmin, but the Fedora-driven repository Extra Packages for Enterprise Linux (EPEL) is doing so, if it’s enabled. But be aware that the configuration file is maintained in /etc/phpMyAdmin/ and may differ in some ways from the official phpMyAdmin documentation.

Installation sur Windows

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

D’autres options similaires sont disponibles sur la page Wikipedia.

Installation à partir de Git

Quelques applications supplémentaires sont nécessaires pour installer depuis Git :

Les sources actuelles de phpMyAdmin peuvent être clonées à partir de https://github.com/phpmyadmin/phpmyadmin.git :

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

Il faut de plus installer les dépendances en utilisant l’outil Composer :

composer update

Si vous ne comptez pas faire de développement, l’installation des outils développeurs peut être ignorée en invoquant :

composer update --no-dev

Enfin, il faudra utiliser Yarn pour installer quelques dépendances JavaScript :

yarn install --production

Installation au moyen de Composer

phpMyAdmin peut être installé au moyen de l’outil Composer. Depuis la version 4.7.0, les versions sont automatiquement répliquées vers le dépôt par défaut Packagist.

Note

Le contenu du dépôt Composer est généré automatiquement et séparément, donc le contenu n’est pas absolument identique à celui de l’archive téléchargée. Cependant, il ne devrait pas y avoir de différences fonctionnelles.

Pour installer phpMyAdmin, exécuter simplement :

composer create-project phpmyadmin/phpmyadmin

Il est aussi possible d’utiliser notre dépôt Composer qui contient l’archive et qui est disponible sur <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 officielle facilement déployable. Elle est téléchargeable en utilisant :

docker pull phpmyadmin

Le serveur phpMyAdmin écoutera sur le port 80. Il prend en charge plusieurs méthodes pour configurer le lien vers le serveur de base de données, soit par la fonctionnalité de lien de Docker, en liant le conteneur de base de données à db pour phpMyAdmin (en indiquant --link votre_serveur_de_base_de_données:db) soit par les variables d’environnement (dans ce cas, il appartient à l’utilisateur 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

Plusieurs fonctionnalités de phpMyAdmin peuvent être configurées 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_PORTS

Une liste de ports du serveur de base de données à utiliser.

Note

Utilisé seulement si PMA_PORT est vide.

PMA_SOCKET

Socket file for the database connection.

PMA_SOCKETS

Comma-separated list of socket files for the database connections.

Note

Used only if PMA_SOCKET is empty.

PMA_ABSOLUTE_URI

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

PMA_QUERYHISTORYDB

Si définit à true, active le stockage de l’historique de SQL dans $cfg['Servers'][$i]['pmadb']. Si false, l’historique sera stocké dans le navigateur et effacé à la déconnexion.

PMA_QUERYHISTORYMAX

Quand définit comme nombre entier, contrôle le nombre d’élément dans l’historique.

PMA_CONTROLHOST

Si définit, cela pointe vers un hôte de base de données alternatif utilisé pour stocker la base « Stockage de la configuration de phpMyAdmin ».

PMA_CONTROLUSER

Définit le nom d’utilisateur de phpMyAdmin pour utiliser la base de données « Stockage de la configuration de phpMyAdmin ».

PMA_CONTROLPASS

Définit le mot de passe de phpMyAdmin pour utiliser la base de données « Stockage de la configuration de phpMyAdmin ».

PMA_CONTROLPORT

Quand définit, cela surchargera le port par défaut (3306) pour se connecter à l’hôte de contrôle.

PMA_PMADB

Quand définit, spécifie le nom de la base de données à utiliser pour la base « Stockage de la configuration de phpMyAdmin ». Quand non définit, les fonctionnalités avancées ne seront pas activées par défaut : elles pourront toujours être activées pour un utilisateur quand il se connecte avec la fonctionnalité Zéro configuration.

Note

Valeurs suggérées : phpmyadmin or pmadb

HIDE_PHP_VERSION

Si elle est définie, cette option cachera la version de PHP (expose_php = Off). Définissez n’importe quelle valeur (comme HIDE_PHP_VERSION=true).

UPLOAD_LIMIT

Si elle est définie, cette option remplacera la valeur par défaut pour apache et php-fpm (cela modifiera les valeurs de upload_max_filesize et post_max_size).

Note

Format : [0-9+](K,M,G) la valeur par défaut est 2048K

MEMORY_LIMIT

Si définit, cette option surchargera la limite mémoire $cfg['MemoryLimit'] de phpMyAdmin et memory_limit de PHP.

Note

Format : [0-9+](K,M,G)K est pour kilo-octets, M pour méga-octet, G pour giga-octets et 1K = 1024 octets. La valeur par défaut est 512M.

MAX_EXECUTION_TIME

Si définit, cette option surchargera le temps maximum d’exécution en secondes pour $cfg['ExecTimeLimit'] de phpMyAdmin et max_execution_time de PHP.

Note

Format : [0-9+]. La valeur par défaut est 600.

PMA_CONFIG_BASE64

Si elle est activée, cette option remplacera le fichier par défaut config.inc.php avec le contenu décodé en base64 de la variable.

PMA_USER_CONFIG_BASE64

Si elle est définie, cette option remplacera le paramètre par défaut config.user.inc.php par le contenu décodé en base64 de la variable.

PMA_UPLOADDIR

Si elle est définie, cette option définira le chemin où les fichiers peuvent être enregistrés pour être disponibles à l’importation ($cfg['UploadDir'])

PMA_SAVEDIR

Si elle est définie, cette option définira le chemin où les fichiers exportés peuvent être sauvegardés ($cfg['SaveDir'])

APACHE_PORT

Si elle est définie, cette option changera le port par défaut d’Apache de 80 au cas où vous voudriez qu’il fonctionne sur un port différent comme un port non privilégié. Définissez-la à n’importe quelle valeur de port (comme APACHE_PORT=8090).

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, dans le 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;

Il est aussi possible de l’utiliser pour définir la configuration du serveur au lieu d’utiliser les variables d’environnement listées dans Variables d’environnement Docker :

<?php
/* Override Servers array */
$cfg['Servers'] = [
    1 => [
        'auth_type' => 'cookie',
        'host' => 'mydb1',
        'port' => 3306,
        'verbose' => 'Verbose name 1',
    ],
    2 => [
        'auth_type' => 'cookie',
        'host' => 'mydb2',
        'port' => 3306,
        'verbose' => 'Verbose name 2',
    ],
];

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”.

/www/themes/

Le répertoire où phpMyAdmin recherche les thèmes. Par défaut, seuls sont fournis par phpMyAdmin sont livrés, mais vous pouvez en ajouter d’autres (voir Thèmes personnalisés) en utilisant les volumes Docker.

Exemples Docker

Pour connecter phpMyAdmin sur un serveur donné, utiliser :

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

Pour connecter phpMyAdmin à plusieurs serveurs, utiliser :

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

Pour utiliser l’option de serveur arbitraire :

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

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:latest

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:latest

Utilisation de thèmes additionnels :

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/custom/phpmyadmin/themeName/:/var/www/html/themes/themeName/ phpmyadmin:latest

Utiliser docker-compose

Alternativement, 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:latest
    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
     - /custom/phpmyadmin/theme/:/www/themes/theme/

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 exemple, en utilisant haproxy, ça peut être réalisé en :

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

Quand vous utilisez traefik, quelque chose comme ce qui suit devrait fonctionner :

defaultEntryPoints = ["http"]
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
      regex = "(http:\\/\\/[^\\/]+\\/([^\\?\\.]+)[^\\/])$"
      replacement = "$1/"

[backends]
  [backends.myadmin]
    [backends.myadmin.servers.myadmin]
    url="http://internal.address.to.pma"

[frontends]
   [frontends.myadmin]
   backend = "myadmin"
   passHostHeader = true
     [frontends.myadmin.routes.default]
     rule="PathPrefixStrip:/phpmyadmin/;AddPrefix:/"

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

version: '2'

services:
  phpmyadmin:
    restart: always
    image: phpmyadmin:latest
    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/

IBM Cloud

Un de nos utilisateurs a créé un guide pratique pour l’installation de phpMyAdmin sur la plate-forme IBM Cloud.

Installation rapide

  1. Choose an appropriate distribution kit from the phpmyadmin.net Downloads page. Some kits contain only the English messages, others contain all languages. We’ll assume you chose a kit whose name looks like 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 les valeurs de configuration par défaut puis écrase ces valeurs avec celles trouvées dans le fichier 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
// The string is a hexadecimal representation of a 32-bytes long string of random bytes.
$cfg['blowfish_secret'] = sodium_hex2bin('f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851');

$i=0;
$i++;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
// if you insist on "root" having no password:
// $cfg['Servers'][$i]['AllowNoPassword'] = 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']      = 'changeme'; // 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 Télécharger 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 script de 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/master/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ée par des 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.

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]

Stockage de la configuration 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

In many cases, this database structure can be automatically created and configured. This is called “Zero Configuration” mode and can be particularly useful in shared hosting situations. “ZeroConf” mode is on by default, to disable set $cfg['ZeroConf'] to 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 :

Et pour toute version de MariaDB :

CREATE USER 'pma'@'localhost' IDENTIFIED VIA mysql_native_password USING 'pmapass';
GRANT SELECT, INSERT, UPDATE, DELETE ON `<pma_db>`.* TO 'pma'@'localhost';

Pour MySQL 8.0 et plus récent :

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

Pour MySQL plus vieux que 8.0 :

CREATE USER 'pma'@'localhost' IDENTIFIED WITH mysql_native_password AS 'pmapass';
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';

Notez que les installations de MySQL avec PHP plus ancien que 7.4 et MySQL plus récent que 8.0 peuvent nécessiter l’utilisation de l’authentification mysql_native_password comme solution de contournement, voir 1.45 Je reçois un message d’erreur à propos d’une méthode d’authentification inconnue caching_sha2_password lors de la tentative d’identification pour plus de détails.

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 pas de fichiers vieux ou périmés 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.

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 phpMyAdmin fraîchement téléchargé 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 d’une version précédente (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 possède une limitation qui ne vous permet pas de vous connecter avec le même utilisateur après la déconnexion.

Mode d’authentification “signon”

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

<?php
/**
 * Single signon for phpMyAdmin
 *
 * This is just example how to use session based single signon with
 * phpMyAdmin, it is not intended to be perfect code and look, only
 * shows how you can integrate this functionality in your application.
 */

declare(strict_types=1);

/* Use cookies for session */
ini_set('session.use_cookies', 'true');
/* Change this to true if using phpMyAdmin over https */
$secureCookie = false;
/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secureCookie, true);
/* Create signon session */
$sessionName = 'SignonSession';
session_name($sessionName);
// Uncomment and change the following line to match your $cfg['SessionSavePath']
//session_save_path('/foobar');
@session_start();

/* Was data posted? */
if (isset($_POST['user'])) {
    /* Store there credentials */
    $_SESSION['PMA_single_signon_user'] = $_POST['user'];
    $_SESSION['PMA_single_signon_password'] = $_POST['password'];
    $_SESSION['PMA_single_signon_host'] = $_POST['host'];
    $_SESSION['PMA_single_signon_port'] = $_POST['port'];
    /* Update another field of server configuration */
    $_SESSION['PMA_single_signon_cfgupdate'] = ['verbose' => 'Signon test'];
    $_SESSION['PMA_single_signon_HMAC_secret'] = hash('sha1', uniqid(strval(random_int(0, mt_getrandmax())), true));
    $id = session_id();
    /* Close that session */
    @session_write_close();
    /* Redirect to phpMyAdmin (should use absolute URL here!) */
    header('Location: ../index.php');
} else {
    /* Show simple form */
    header('Content-Type: text/html; charset=utf-8');

    echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
    echo '<!DOCTYPE HTML>
<html lang="en" dir="ltr">
<head>
<link rel="icon" href="../favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon">
<meta charset="utf-8">
<title>phpMyAdmin single signon example</title>
</head>
<body>';

    if (isset($_SESSION['PMA_single_signon_error_message'])) {
        echo '<p class="error">';
        echo $_SESSION['PMA_single_signon_error_message'];
        echo '</p>';
    }

    echo '<form action="signon.php" method="post">
Username: <input type="text" name="user" autocomplete="username" spellcheck="false"><br>
Password: <input type="password" name="password" autocomplete="current-password" spellcheck="false"><br>
Host: (will use the one from config.inc.php by default)
<input type="text" name="host"><br>
Port: (will use the one from config.inc.php by default)
<input type="text" name="port"><br>
<input type="submit">
</form>
</body>
</html>';
}

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

<?php
/**
 * Single signon for phpMyAdmin using OpenID
 *
 * This is just example how to use single signon with phpMyAdmin, it is
 * not intended to be perfect code and look, only shows how you can
 * integrate this functionality in your application.
 *
 * It uses OpenID pear package, see https://pear.php.net/package/OpenID
 *
 * User first authenticates using OpenID and based on content of $AUTH_MAP
 * the login information is passed to phpMyAdmin in session data.
 */

declare(strict_types=1);

if (false === @include_once 'OpenID/RelyingParty.php') {
    exit;
}

/* Change this to true if using phpMyAdmin over https */
$secureCookie = false;

/**
 * Map of authenticated users to MySQL user/password pairs.
 */
$authMap = ['https://launchpad.net/~username' => ['user' => 'root', 'password' => '']];

// phpcs:disable PSR1.Files.SideEffects,Squiz.Functions.GlobalFunction

/**
 * Simple function to show HTML page with given content.
 *
 * @param string $contents Content to include in page
 */
function Show_page(string $contents): void
{
    header('Content-Type: text/html; charset=utf-8');

    echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
    echo '<!DOCTYPE HTML>
<html lang="en" dir="ltr">
<head>
<link rel="icon" href="../favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon">
<meta charset="utf-8">
<title>phpMyAdmin OpenID signon example</title>
</head>
<body>';

    if (isset($_SESSION['PMA_single_signon_error_message'])) {
        echo '<p class="error">' . $_SESSION['PMA_single_signon_message'] . '</p>';
        unset($_SESSION['PMA_single_signon_message']);
    }

    echo $contents;
    echo '</body></html>';
}

/**
 * Display error and exit
 *
 * @param Exception $e Exception object
 */
function Die_error(Throwable $e): void
{
    $contents = "<div class='relyingparty_results'>\n";
    $contents .= '<pre>' . htmlspecialchars($e->getMessage()) . "</pre>\n";
    $contents .= "</div class='relyingparty_results'>";
    Show_page($contents);
    exit;
}

// phpcs:enable

/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secureCookie, true);
/* Create signon session */
$sessionName = 'SignonSession';
session_name($sessionName);
@session_start();

// Determine realm and return_to
$base = 'http';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
    $base .= 's';
}

$base .= '://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];

$realm = $base . '/';
$returnTo = $base . dirname($_SERVER['PHP_SELF']);
if ($returnTo[strlen($returnTo) - 1] !== '/') {
    $returnTo .= '/';
}

$returnTo .= 'openid.php';

/* Display form */
if ((! count($_GET) && ! count($_POST)) || isset($_GET['phpMyAdmin'])) {
    /* Show simple form */
    $content = '<form action="openid.php" method="post">
OpenID: <input type="text" name="identifier"><br>
<input type="submit" name="start">
</form>';
    Show_page($content);
    exit;
}

/* Grab identifier */
$identifier = null;
if (isset($_POST['identifier']) && is_string($_POST['identifier'])) {
    $identifier = $_POST['identifier'];
} elseif (isset($_SESSION['identifier']) && is_string($_SESSION['identifier'])) {
    $identifier = $_SESSION['identifier'];
}

/* Create OpenID object */
try {
    $o = new OpenID_RelyingParty($returnTo, $realm, $identifier);
} catch (Throwable $e) {
    Die_error($e);
}

/* Redirect to OpenID provider */
if (isset($_POST['start'])) {
    try {
        $authRequest = $o->prepare();
    } catch (Throwable $e) {
        Die_error($e);
    }

    $url = $authRequest->getAuthorizeURL();

    header('Location: ' . $url);
    exit;
}

/* Grab query string */
if (! count($_POST)) {
    [, $queryString] = explode('?', $_SERVER['REQUEST_URI']);
} else {
    // Fetch the raw query body
    $queryString = file_get_contents('php://input');
}

/* Check reply */
try {
    $message = new OpenID_Message($queryString, OpenID_Message::FORMAT_HTTP);
} catch (Throwable $e) {
    Die_error($e);
}

$id = $message->get('openid.claimed_id');

if (empty($id) || ! isset($authMap[$id])) {
    Show_page('<p>User not allowed!</p>');
    exit;
}

$_SESSION['PMA_single_signon_user'] = $authMap[$id]['user'];
$_SESSION['PMA_single_signon_password'] = $authMap[$id]['password'];
$_SESSION['PMA_single_signon_HMAC_secret'] = hash('sha1', uniqid(strval(random_int(0, mt_getrandmax())), true));
session_write_close();
/* Redirect to phpMyAdmin (should use absolute URL here!) */
header('Location: ../index.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 :

<?php
/**
 * Single signon for phpMyAdmin
 *
 * This is just example how to use script based single signon with
 * phpMyAdmin, it is not intended to be perfect code and look, only
 * shows how you can integrate this functionality in your application.
 */

declare(strict_types=1);

// phpcs:disable Squiz.Functions.GlobalFunction

/**
 * This function returns username and password.
 *
 * It can optionally use configured username as parameter.
 *
 * @param string $user User name
 *
 * @return array<int,string>
 */
function get_login_credentials(string $user): array
{
    /* Optionally we can use passed username */
    if (! empty($user)) {
        return [$user, 'password'];
    }

    /* Here we would retrieve the credentials */
    return ['root', ''];
}

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'] (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 ayez besoin d’une suite de test.

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

  • Choisit 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é.

  • Refuse l’accès aux fichiers auxiliaires des sous-dossiers ./libraries et ./templates/ de la configuration du serveur Web. Une telle configuration empêche de possibles vulnérabilités à l’exposition de chemins et de scripts inter-sites qui pourraient être découvertes dans le code. Pour le serveur Web Apache, la façon habituelle de procéder est d’utiliser un fichier .htaccess dans ces dossiers.

  • Refuse l’accès aux fichiers temporaires, voir $cfg['TempDir'] (si cela est placé à l’intérieur de votre racine web, voir aussi Les répertoires de transfert/sauvegarde/import du serveur web) .

  • 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.

  • Active Authentification à deux facteurs pour votre compte.

  • 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, voir $cfg['AuthLog']). Cela peut servir à un outil comme fail2ban pour bloquer les attaques par force brute. Noter que le fichier de journalisation utilisé par syslog n’est pas le même que celui des erreurs Apache ou celui journalisant les accès.

  • Au cas où phpMyAdmin est exécuté en même temps que d’autres applications PHP, il est généralement conseillé d’utiliser un emplacement de session séparé pour phpMyAdmin afin d’éviter des attaques possibles basées sur la session. Pour cela il est possible d’utiliser $cfg['SessionSavePath'].

Utilisation de SSL pour la connexion au serveur de base de données

Il est recommandé d’utiliser SSL lors de la connexion au serveur de bases de données distant. Il existe plusieurs options de configuration SSL :

$cfg['Servers'][$i]['ssl']
Définit si SSL est utilisé ou pas. En cas d’activation seule, la connexion sera chiffrée mais pas authentifiée ; il sera impossible de vérifier que la communication se fait avec le bon serveur.
$cfg['Servers'][$i]['ssl_key'] et $cfg['Servers'][$i]['ssl_cert']
Ceci est utilisé pour l’authentification du client au serveur.
$cfg['Servers'][$i]['ssl_ca'] et $cfg['Servers'][$i]['ssl_ca_path']
Les autorités de certification de confiance pour les certificats de serveur. Cela est utilisé pour s’assurer que la communication est faite un serveur de confiance.
$cfg['Servers'][$i]['ssl_verify']
Cette configuration désactive la vérification du certificat de serveur. À utiliser avec prudence.

Lorsque le serveur de base de données utilise une connexion locale ou un réseau privé et que SSL ne peut pas être configuré, vous pouvez utiliser $cfg['MysqlSslWarningSafeHosts'] pour lister explicitement les noms d’hôtes qui sont considérés comme sûrs.

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.

Configuration

All configurable data is placed in config.inc.php in phpMyAdmin’s toplevel directory. If this file does not exist, please refer to the Installation section to create one. This file only needs to contain the parameters you want to change from their corresponding default value.

Voir aussi

Exemple pour des exemples de configurations

Si une directive manque dans votre fichier, vous pouvez ajouter une nouvelle ligne avec ce fichier. Ce fichier sert à remplacer les valeurs par défaut ; si vous souhaitez utiliser les valeurs par défaut, il n’est pas nécessaire d’ajouter de ligne ici.

Les paramètres relatifs à la conception (comme les couleurs), se trouvent dans themes/themename/layout.inc.phpscss/_variables.scss. Vous pouvez également créer les fichiers config.footer.inc.php et config.header.inc.php pour ajouter à votre site du code spécifique en-tête et en pied de chaque page.

Note

Certaines distributions, comme par exemple Debian et Ubuntu, placent le fichier config.inc.php dans /etc/phpmyadmin et non pas avec le reste des sources de phpMyAdmin.

Configuration de base

$cfg['PmaAbsoluteUri']
Type:chaîne
Valeur par défaut:
 ''

Modifié dans la version 4.6.5: Ce paramètre n’était plus disponible dans phpMyAdmin 4.6.0 - 4.6.4.

Définissez ici l”URL complète (avec le chemin d’accès complet) du répertoire d’installation de votre phpMyAdmin. C’est-à-dire https://www.exemple.net/chemin_vers_votre_repertoire_phpMyAdmin/. Veuillez noter également que l”URL de la plupart des serveurs Web est sensible à la casse (même sous Windows). N’oubliez pas la barre oblique (« / ») finale pour votre URL.

À partir de la version 2.3.0, il est conseillé d’essayer de laisser ce paramètre à blanc. Dans la plupart des cas, phpMyAdmin détecte automatiquement le paramètre approprié. Les utilisateurs de « port forwarding » ou de configuration de reverse-proxy complexes pourraient avoir besoin de modifier ceci.

Un bon test est de parcourir une table, d’éditer une ligne et de l’enregistrer. Vous devriez obtenir un message d’erreur si phpMyAdmin rencontre des problèmes pour détecter automatiquement la bonne valeur. Si vous obtenez une erreur indiquant que ce paramètre doit être défini ou que le code d’auto-détection échoue à trouver votre chemin d’accès, veuillez poster un rapport de bogue sur notre outils de suivi de bogues pour que nous améliorions le code.

$cfg['PmaNoRelation_DisableWarning']
Type:booléen
Valeur par défaut:
 false

À partir de la version 2.3.0 phpMyAdmin offre beaucoup de fonctionnalités pour travailler avec les tables maîtres / de référence (voir $cfg['Servers'][$i]['pmadb']).

Si vous avez essayé de le paramétrer et qu’il ne fonctionne pas pour vous, regardez la page Structure d’une base de données où vous voudriez l’utiliser. Vous trouverez alors un lien qui analysera pourquoi ces fonctionnalités ont été désactivées.

Si vous ne voulez pas utiliser ces fonctionnalités, mettez cette variable à TRUE pour empêcher ce message d’apparaître.

$cfg['AuthLog']
Type:chaîne
Valeur par défaut:
 'auto'

Nouveau dans la version 4.8.0: Ceci est géré depuis phpMyAdmin 4.8.0.

Configuration de l’emplacement des journaux d’authentification. Les tentatives d’authentification ayant échoué (ou toutes les tentatives en fonction de $cfg['AuthLogSuccess']) seront enregistrées selon cette directive :

auto
Laisser phpMyAdmin choisir automatiquement entre syslog et php.
syslog
La journalisation utilisant syslog avec la fonctionnalité AUTH se trouve dans /var/log/auth.log sur la plupart des systèmes.
php
Journalisation dans le fichier d’erreur de PHP.
sapi
Journalisation dans le fichier journal de PHP SAPI.
/chemin/du/fichier
Toute autre valeur est considérée comme un nom de fichier et les entrées de journal sont écrites ici.

Note

Pour la journalisation vers un fichier, s’assurer que ses permissions soient correctement définies pour un utilisateur du serveur Web ; la configuration devrait suivre précisément les instructions décrites dans $cfg['TempDir'] :

$cfg['AuthLogSuccess']
Type:booléen
Valeur par défaut:
 false

Nouveau dans la version 4.8.0: Ceci est géré depuis phpMyAdmin 4.8.0.

Pour indiquer de consigner les tentatives d’authentification réussies dans $cfg['AuthLog'].

$cfg['SuhosinDisableWarning']
Type:booléen
Valeur par défaut:
 false

Un avertissement est affiché sur la page principale si Suhosin est détecté.

Vous pouvez passer cette variable à true pour empêcher ce message d’apparaître.

$cfg['LoginCookieValidityDisableWarning']
Type:booléen
Valeur par défaut:
 false

Un avertissement est affiché sur la page principale si le paramètre PHP session.gc_maxlifetime est inférieur à la durée de validité du cookie configuré dans phpMyAdmin.

Vous pouvez passer cette variable à true pour empêcher ce message d’apparaître.

$cfg['ServerLibraryDifference_DisableWarning']
Type:booléen
Valeur par défaut:
 false

Obsolète depuis la version 4.7.0: Ce réglage a été retiré car l’avertissement a aussi été retiré.

Un avertissement est affiché sur la page principale s’il y a une différence entre la bibliothèque MySQL et la version du serveur.

Vous pouvez passer cette variable à true pour empêcher ce message d’apparaître.

$cfg['ReservedWordDisableWarning']
Type:booléen
Valeur par défaut:
 false

Cet avertissement est affiché sur la page Structure d’une table si un ou plusieurs noms de colonnes correspondent à des mots réservés de MySQL.

Si vous voulez désactiver cet avertissement, vous pouvez le définir à true et celui-ci ne sera plus affiché.

$cfg['TranslationWarningThreshold']
Type:entier
Valeur par défaut:
 80

Affiche un avertissement sur les traductions incomplètes à partir d’un certain seuil.

$cfg['SendErrorReports']
Type:chaîne
Valeur par défaut:
 'ask'

Les valeurs valides sont :

  • ask
  • always
  • never

Définir le comportement par défaut pour les rapports d’erreur JavaScript.

Quand une erreur est détectée dans l’exécution de JavaScript. Un rapport d’erreur peut être envoyé à l’équipe de phpMyAdmin si l’utilisateur y consent.

Le paramètre par défaut 'ask' demandera chaque fois à l’utilisateur s’il y a un nouveau rapport d’erreur. Cependant, vous pouvez définir ce paramètre à 'always' pour envoyer un rapport d’erreur sans demander de confirmation ou à 'never' pour ne jamais envoyer de rapports d’erreur.

Cette directive est disponible à la fois dans le fichier de configuration et dans les préférences utilisateur. Si la personne responsable d’une installation mutli-utilisateur préfère désactiver cette fonctionnalités pour tous les utilisateurs, la valeur 'never' doit être définie etla directive $cfg['UserprefsDisallow'] doit contenir 'SendErrorReports' dans un de ses tableaux de valeurs.

$cfg['ConsoleEnterExecutes']
Type:booléen
Valeur par défaut:
 false

Ce paramétrage réglé sur true permet à l’utilisateur d’exécuter des requêtes en appuyant sur Entrée au lieu de Ctrl+Entrée. Une nouvelle ligne peut être insérée en appuyant sur Maj+Entrée.

Le comportement de la console peut être temporairement modifié en utilisant l’interface des paramètres de la console.

$cfg['AllowThirdPartyFraming']
Type:booléen|chaîne
Valeur par défaut:
 false

Définir ceci à true permet à phpMyAdmin d’être inclus à l’intérieur d’un cadre, et cela représente un potentiel trou de sécurité pour les attaques de script inter-cadre (cross-frame) ou par clickjacking. Définir ceci à “sameorigin” empêche phpMyAdmin d’être inclus depuis une autre document dans un cadre, sauf si ce document appartient au même domaine.

Paramètres de connexion au serveur

$cfg['Servers']
Type:array
Valeur par défaut:
 un tableau de serveur avec les paramètres listés ci-dessous

Since version 1.4.2, phpMyAdmin supports the administration of multiple MySQL servers. Therefore, a $cfg['Servers']-array has been added which contains the login information for the different servers. The first $cfg['Servers'][$i]['host'] contains the hostname of the first server, the second $cfg['Servers'][$i]['host'] the hostname of the second server, etc. You can put as many sections for server definition as you need in config.inc.php, copy that block or needed parts (you don’t have to define all settings, just those you need to change).

Note

Le tableau $cfg['Servers'] commence par $cfg[“Servers”][1]. N’utilisez pas $cfg[“Servers”][0]. Si vous voulez plus d’un serveur, copiez simplement la section suivante (incluant l’incrément $i) plusieurs fois. Il n’est pas utilise de renseigner tous les paramètres, ne renseignez que ceux que vous avez besoin de changer.

$cfg['Servers'][$i]['host']
Type:chaîne
Valeur par défaut:
 'localhost'

Le nom d’hôte ou l’adresse IP du $i-ème serveur MySQL. Par ex. localhost.

Les valeurs autorisées sont :

  • nom d’hôte, par exemple, 'localhost' ou encore 'mabdd.exemple.org'
  • adresse IP, par exemple, '127.0.0.1' ou encore '192.168.10.1'
  • adresse IPv6, par exemple, 2001:cdba:0000:0000:0000:0000:3257:9652
  • point - '.', c’est-à-dire, utiliser les canaux nommés sur les systèmes Windows
  • vide - '', désactive ce serveur

Note

Le nom d’hôte localhost est spécialement pris en charge par MySQL qui utilise un protocole de connexion basé sur socket. Pour exploiter un adressage TCP/IP, utiliser une adresse IP ou un nom d’hôte comme 127.0.0.1 ou db.example.com. Il est possible de configurer le chemin vers le socket avec $cfg['Servers'][$i]['socket'].

$cfg['Servers'][$i]['port']
Type:chaîne
Valeur par défaut:
 ''

Le numéro de port du $i-ème serveur MySQL. Ce numéro est 3306 par défaut (laisser vide pour utiliser la valeur par défaut).

Note

Si vous utilisez localhost comme nom d’hôte, MySQL ignore ce numéro de port et se connecte avec le socket, donc, si vous voulez vous connecter avec un port différent de celui par défaut, utilisez 127.0.0.1 ou le nom d’hôte réel dans $cfg['Servers'][$i]['host'].

$cfg['Servers'][$i]['socket']
Type:chaîne
Valeur par défaut:
 ''

Le chemin vers le socket à utiliser. Laisser à vide pour utiliser le chemin par défaut. Pour déterminer le bon socket, vérifiez votre configuration MySQL ou, en utilisant la ligne de commande mysql, utilisez la commande status. Parmi les informations affichées se trouvera le socket utilisé.

Note

Prend effet seulement si $cfg['Servers'][$i]['host'] est défini à localhost.

$cfg['Servers'][$i]['ssl']
Type:booléen
Valeur par défaut:
 false

Pour activer ou pas une connexion SSL entre phpMyAdmin et le serveur MySQL pour sécuriser la connexion.

En utilisant l’extension 'mysql', aucune des options de configuration 'ssl…' restantes ne s’applique.

Nous vous recommandons vivement d’utiliser l’extension 'mysqli' pour l’utilisation de cette option.

$cfg['Servers'][$i]['ssl_key']
Type:chaîne
Valeur par défaut:
 NULL

Chemin d’accès vers le fichier de certificat (key) client lors de l’utilisation de SSL pour la connexion au serveur MySQL. Ceci est utilisé pour authentifier le client au serveur.

Par exemple :

$cfg['Servers'][$i]['ssl_key'] = '/etc/mysql/server-key.pem';
$cfg['Servers'][$i]['ssl_cert']
Type:chaîne
Valeur par défaut:
 NULL

Chemin d’accès vers le fichier de certificat client lors de l’utilisation de SSL pour la connexion au serveur MySQL. Ceci est utilisé pour authentifier le client au serveur.

$cfg['Servers'][$i]['ssl_ca']
Type:chaîne
Valeur par défaut:
 NULL

Chemin d’accès vers le fichier de certificat (CA) lors de l’utilisation de SSL pour la connexion au serveur MySQL.

$cfg['Servers'][$i]['ssl_ca_path']
Type:chaîne
Valeur par défaut:
 NULL

Répertoire contenant les certificats SSL CA (autorité de certification) approuvés au format PEM.

$cfg['Servers'][$i]['ssl_ciphers']
Type:chaîne
Valeur par défaut:
 NULL

Liste des chiffrements SSL disponibles pour les connexions au serveur MySQL.

$cfg['Servers'][$i]['ssl_verify']
Type:booléen
Valeur par défaut:
 true

Nouveau dans la version 4.6.0: Ceci est géré depuis phpMyAdmin 4.6.0.

Si votre installation PHP utilise le pilote natif de MySQL (mysqlnd), que votre serveur MySQL est en version 5.6 ou supérieure et que votre certificat SSL est auto-signé, il y a des chances que votre connexion SSL échoue en raison de la validation. Définir ceci à false désactivera la vérification de validation.

Depuis PHP 5.6.0, il vérifie aussi si le nom du serveur correspond au CN de son certificat. Il n’existe actuellement aucun moyen de désactiver uniquement cette vérification sauf à désactiver totalement la vérification SSL.

Avertissement

Désactiver la vérification du certificat SSL Rend inutile l’utilisation de SSL. Ceci rendra la connexion vulnérable à des attaque de type « man in the middle ».

Note

Cette étiquette ne fonctionne qu’avec PHP 5.6.16 ou supérieur.

$cfg['Servers'][$i]['connect_type']
Type:chaîne
Valeur par défaut:
 'tcp'

Obsolète depuis la version 4.7.0: Ce réglage n’est plus utilisé à aprtir de la version 4.7.0, depuis que MySQL a décidé du type de connexion basé sur l’hôte. Merci de définir à la place et en conséquence $cfg['Servers'][$i]['host'].

Quel type de connexion utiliser avec le serveur MySQL. Vos choix sont 'socket' et 'tcp'. Par défaut, c’est “tcp” parce qu’il est pratiquement sûr qu’il est disponible sur tous les serveurs MySQL, alors que les sockets ne sont pas gérés sur certaines plateformes.

$cfg['Servers'][$i]['compress']
Type:booléen
Valeur par défaut:
 false

Pour utiliser ou non un protocole compressé pour la connexion au serveur MySQL (expérimental).

$cfg['Servers'][$i]['controlhost']
Type:chaîne
Valeur par défaut:
 ''

Permet d’utiliser un hôte alternatif pour la configuration des données de stockage.

$cfg['Servers'][$i]['controlport']
Type:chaîne
Valeur par défaut:
 ''

Permet d’utiliser un port alternatif pour accéder à l’hôte contenant la configuration du stockage.

$cfg['Servers'][$i]['controluser']
Type:chaîne
Valeur par défaut:
 ''
$cfg['Servers'][$i]['controlpass']
Type:chaîne
Valeur par défaut:
 ''

Ce compte spécial est utilisé pour accéder aux Stockage de la configuration de phpMyAdmin. Vous n’en avez pas besoin dans le cas d’un utilisateur unique, mais si phpMyAdmin est partagé, il est recommandé de donner accès aux Stockage de la configuration de phpMyAdmin seulement à cet utilisateur et de configurer phpMyAdmin pour l’utiliser. Tous les utilisateurs seront alors capables d’utiliser les fonctionnalités sans avoir d’accès direct aux Stockage de la configuration de phpMyAdmin.

Modifié dans la version 2.2.5: ceux-ci étaient appelés stduser et stdpass

$cfg['Servers'][$i]['control_*']
Type:mixte

Nouveau dans la version 4.7.0.

Vous pouvez modifier tout paramètre de connexion MySQL pour le lien de contrôle (utilisé pour accéder aux Stockage de la configuration de phpMyAdmin) en utilisant la configuration préfixée avec control_.

Ceci peut être utilisé pour modifier tout aspect du contrôle de connexion, qui utilise par défaut les mêmes paramètres que ceux de l’utilisateur.

Par exemple, vous pouvez configurer SSL pour le contrôle de connexion :

// Enable SSL
$cfg['Servers'][$i]['control_ssl'] = true;
// Client secret key
$cfg['Servers'][$i]['control_ssl_key'] = '../client-key.pem';
// Client certificate
$cfg['Servers'][$i]['control_ssl_cert'] = '../client-cert.pem';
// Server certification authority
$cfg['Servers'][$i]['control_ssl_ca'] = '../server-ca.pem';
$cfg['Servers'][$i]['auth_type']
Type:chaîne
Valeur par défaut:
 'cookie'

Définit le mode d’authentification config, cookie, signon ou HTTP qui sera utilisé sur le serveur.

  • l’authentification “config” ($auth_type = 'config') est la bonne vieille méthode : nom d’utilisateur et mot de passe sont stockés dans config.inc.php.
  • La méthode d’authentification par cookie ($auth_type = 'cookie') permet de se connecter comme un utilisateur MySQL valide à l’aide des cookies.
  • La méthode d’authentification “http” permet de se connecter comme un utilisateur MySQL valide à l’aide de HTTP-Auth.
  • Le mode d’authentification “signon” ($auth_type = 'signon') permet de se connecter en utilisant des données de session PHP préparée ou en utilisant le script PHP fourni.
$cfg['Servers'][$i]['auth_http_realm']
Type:chaîne
Valeur par défaut:
 ''

En utilisant l’authentification auth_type = http, ce champ permet de définir un flux d’authentification HTTP basique personnalisé qui sera affiché à l’utilisateur. Si ce n’est pas explicitement spécifié dans votre configuration, une chaîne combinée de « phpMyAdmin  » et soit de $cfg['Servers'][$i]['verbose'] ou $cfg['Servers'][$i]['host'] sera utilisée.

$cfg['Servers'][$i]['auth_swekey_config']
Type:chaîne
Valeur par défaut:
 ''

Nouveau dans la version 3.0.0.0: Ce paramètre était nommé $cfg[“Servers” ;][$i][“auth_feebee_config” ;] et a été renommé avant la sortie de la version 3.0.0.0.

Obsolète depuis la version 4.6.4: Ce paramètre a été supprimé parce que leurs serveurs ne fonctionnent plus et qu’il ne fonctionnait pas correctement.

Obsolète depuis la version 4.0.10.17: Ce paramètre a été supprimé dans une version de maintenance car leurs serveurs ne fonctionnent plus et ne fonctionnaient pas correctement.

Le nom du fichier contenant les identifiants swekey et les noms de connexion pour l’authentification matérielle. Laissez vide pour désactiver cette fonctionnalité.

$cfg['Servers'][$i]['user']
Type:chaîne
Valeur par défaut:
 'root'
$cfg['Servers'][$i]['password']
Type:chaîne
Valeur par défaut:
 ''

En utilisant $cfg['Servers'][$i]['auth_type'] défini à “config”, c’est la paire utilisateur/mot de passe qu’utilisera phpMyAdmin pour se connecter au serveur MySQL. Cette paire  utilisateur/mot de passe n’est pas nécessaire quand  les modes d’authentification HTTP ou cookie sont utilisés, et doit rester vide.

$cfg['Servers'][$i]['nopassword']
Type:booléen
Valeur par défaut:
 false

Obsolète depuis la version 4.7.0: Ce paramètre a été supprimé car il peut produire des résultats inattendus.

Permet d’essayer de se connecter sans mot de passe quand la connexion avec mot de passe a échoué. Ceci peut être utilisé en conjonction avec l’authentification http, quand l’authentification est faite par d’autres moyens et que phpMyAdmin obtient le nom d’utilisateur à partir de auth et utilise un mot de passe « vide » pour se connecter à MySQL. La connexion par mot de passe est d’abord essayée, mais ensuite, en moyen de secours, aucune méthode par mot de passe n’est essayée.

Note

It is possible to allow logging in with no password with the $cfg['Servers'][$i]['AllowNoPassword'] directive.

$cfg['Servers'][$i]['only_db']
Type:chaîne ou tableau
Valeur par défaut:
 ''

S’il est indiqué un nom de base de données (ou un tableau de noms de bases de données), seule(s) cette (ces) base(s) sera (seront) affichée(s) à l’utilisateur. Depuis la version 2.2.1 de phpMyAdmin, ce(s) nom(s) de base(s) de données peuvent contenir des méta-caractères MySQL (« _ » et « % ») : si vous voulez utiliser des instances littérales de ces caractères, utilisez des séquences d’échappement (c’est-à-dire écrivez 'ma\_bdd' et pas 'ma_bdd').

Ce paramétrage est un moyen efficace de diminuer la charge du serveur puisque ce dernier n’a pas besoin d’envoyer des requêtes MySQL pour construire la liste des bases de données disponibles. Mais cela ne remplacera pas les règles de privilèges sur le serveur de base de données MySQL. S’il est utilisé, cela signifie seulement que seules ces bases de données seront affichées, mais pas que toutes les autres bases de données ne pourront pas être utilisées.

Un exemple d’utilisation de plus d’une base de données :

$cfg['Servers'][$i]['only_db'] = ['db1', 'db2'];

Modifié dans la version 4.0.0: Les versions précédentes permettaient d’indiquer l’ordre d’affichage des noms de bases de données à l’aide de cette directive.

$cfg['Servers'][$i]['hide_db']
Type:chaîne
Valeur par défaut:
 ''

Expression régulière pour masquer certaines bases pour les utilisateurs sans privilèges. Ceci ne les masque que pour le listage, l’utilisateur est toujours capable d’y accéder (en utilisant par exemple la zone de requête SQL). Pour limiter l’accès, utiliser le système de privilège de MySQL. Par exemple, pour masquer toutes les bases de données commençant par la lettre « a », utiliser

$cfg['Servers'][$i]['hide_db'] = '^a';

et pour masquer les bases de données « db1 » et « db2 », utiliser

$cfg['Servers'][$i]['hide_db'] = '^(db1|db2)$';

Vous pourrez trouver plus d’informations sur les expressions régulières dans la section syntaxe de motif PCRE dans le manuel de référence de PHP.

$cfg['Servers'][$i]['verbose']
Type:chaîne
Valeur par défaut:
 ''

Seulement utile si vous utilisez phpMyAdmin avec plusieurs entrées de serveurs. Si elle est définie, cette chaîne sera affichée à la place du nom d’hôte dans le menu déroulant de la page principale. Cela peut être utile si vous ne voulez montrer que certaines bases de données sur votre système,par exemple. Pour le mode d’authentification HTTP, tous les caractères non-US-ASCII seront enlevés.

$cfg['Servers'][$i]['extension']
Type:chaîne
Valeur par défaut:
 'mysqli'

Obsolète depuis la version 4.2.0: Ce paramétrage a été supprimé. L’extension mysql est uniquement utilisée lorsque l’extension mysqli n’est pas disponible. À partir de 5.0.0, seule l’extension mysqli peut être utilisée.

L’extension PHP MySQL à utiliser (mysql ou mysqli).

Il est recommandé d’utiliser l’extension 'mysqli' pour toutes les installations.

$cfg['Servers'][$i]['pmadb']
Type:chaîne
Valeur par défaut:
 ''

Le nom de la base de données contenant la configuration de stockage de phpMyAdmin.

Voir la section Stockage de la configuration de phpMyAdmin dans ce document pour voir les avantages de cette fonctionnalité, ainsi qu’une manière rapide de créer cette base de données et les tables nécessaires.

Si vous êtes le seul utilisateur de cette installation phpMyAdmin, vous pouvez utiliser votre base de données courante pour stocker ces tables spéciales ; dans ce cas, mettez juste le nom de votre base de données dans $cfg['Servers'][$i]['pmadb']. Pour une installation multi-utilisateurs, renseigner ce paramètre avec le nom de votre base de données centrale contenant la configuration de stockage de phpMyAdmin.

$cfg['Servers'][$i]['bookmarktable']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 2.2.0.

Depuis la version 2.2.0, phpMyAdmin permet aux utilisateurs la mise en signets (favoris) des requêtes. Cela peut être utile pour les requêtes que vous utilisez souvent. Pour permettre l’utilisation de cette fonctionnalité :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['relation']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 2.2.4.

Depuis la version 2.2.4, vous pouvez décrire, dans une table spéciale « relation », quel colonne est une clé pour une autre table (une clé étrangère). phpMyAdmin utilise actuellement cela pour :

Les clés peuvent être numériques ou alphanumériques.

Pour pouvoir utiliser cette fonctionnalité :

  • paramétrer $cfg['Servers'][$i]['pmadb'] et la configuration de stockage de phpMyAdmin
  • mettre le nom de la table de relation dans $cfg['Servers'][$i]['relation']
  • puis, en tant qu’utilisateur normal, ouvrir phpMyAdmin et pour chacune de vos tables où vous voulez utiliser cette fonctionnalité, cliquer sur Structure/Gestion des relations/ et choisir les colonnes étrangers.

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

Note

Veuillez noter que dans la version actuelle, master_db doit être identique à foreign_db. Ces champs ont été prévus pour le développement futur de relations inter-bases.

$cfg['Servers'][$i]['table_info']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 2.3.0.

Depuis la version 2.3.0, vous pouvez décrire dans une table spéciale « table_info », quel colonne doit être affichée comme info-bulle en déplaçant le curseur sur la clé correspondante. Pour permettre l’utilisation de cette fonctionnalité :

  • paramétrer $cfg['Servers'][$i]['pmadb'] et la configuration de stockage de phpMyAdmin
  • mettre le nom de la table dans $cfg['Servers'][$i]['table_info'] (par ex. pma__table_info)
  • ensuite, pour chaque table pour laquelle vous voulez utiliser cette fonctionnalité, cliquer sur « Structure/Gestion des relations/Champ à afficher » pour choisir la colonne.

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['table_coords']
Type:chaîne ou false
Valeur par défaut:
 ''

La fonctionnalité Concepteur peut enregistrer l’agencement de la page ; en cliquant sur le bouton « Enregistrer la page » ou « Enregistrer la page sous » dans le menu de conception, il est possible de personnaliser l’agencement et le charger automatiquement lors de la prochaine utilisation du Concepteur. L’agencement est stocké dans cette table. De plus, cette table est également nécessaire pour la fonctionnalité d’exportation de relations PDF, consulter $cfg['Servers'][$i]['pdf_pages'] pour plus de détails.

$cfg['Servers'][$i]['pdf_pages']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 2.3.0.

Depuis la version 2.3.0, phpMyAdmin peut créer des pages PDF montrant les relations entre les tables. De plus, l’interface Concepteur permet de gérer visuellement les relations. Pour ce faire, on doit utiliser deux tables, « pdf_pages » (qui stocke les informations sur les pages PDF disponibles), et « table_coords » (qui stocke les coordonnées où chaque table sera placée sur le schéma PDF réalisé). Il faut obligatoirement utiliser la fonctionnalité « relation ».

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée également en définissant la configuration à false.

$cfg['Servers'][$i]['designer_coords']
Type:chaîne
Valeur par défaut:
 ''

Nouveau dans la version 2.10.0: Depuis la version 2.10.0, une interface Designer est disponible ; elle permet de gérer visuellement les relations.

Obsolète depuis la version 4.3.0: Ce paramètre a été supprimé et les données de positionnement des tables du Designer sont désormais stockées dans $cfg['Servers'][$i]['table_coords'].

Note

Vous pouvez maintenant supprimer la table pma__designer_coords de votre base de données de stockage de configuration phpMyAdmin et supprimer $cfg['Servers'][$i]['designer_coords'] de votre fichier de configuration.

$cfg['Servers'][$i]['column_info']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 2.3.0.

Cette partie nécessite une mise à jour du contenu ! Depuis la version 2.3.0, vous pouvez stocker des commentaires pour décrire chaque colonne de chaque table. Ils seront alors visibles dans « Version imprimable ».

À partir de la version 2.5.0, les commentaires sont par conséquent utilisés dans les pages de propriété de table et dans la vue afficher la table, apparaissant sous forme d’info-bulle au-dessus du nom de colonne (page propriétés) ou intégrés dans l’en-tête de la vue parcours de table. Ils peuvent aussi être vus dans un fichier d’exportation de table. Veuillez consulter les directives de configuration adéquates plus loin.

Une autre nouveauté de la version 2.5.0 est le système de conversion MIME qui est également fondé sur la structure de table suivante. Voir la section Transformations pour plus de renseignements. Pour utiliser le système de conversion MIME, votre table column_info doit contenir les trois nouveaux champs “mimetype”, “transformation”, “transformation_options”.

À compter de la version 4.3.0, un nouveau système de transformations orienté saisie a été introduit. Par conséquent, la compatibilité ascendante du code utilisé dans l’ancien système de transformations a été retiré. Il est donc nécessaire de mettre à jour la table column_info afin que les anciennes transformations et le nouveau système de transformations orienté saisie fonctionnent. phpMyAdmin la mettra à jour automatiquement en analysant la structure actuelle de votre table column_info. Cependant, si quelque chose se passait mal avec la mise à jour automatique, vous pouvez utiliser le script SQL qui se trouve dans ./sql/upgrade_column_info_4_3_0+.sql pour faire la mise à jour manuellement.

Pour pouvoir utiliser cette fonctionnalité :

  • paramétrer $cfg['Servers'][$i]['pmadb'] et la configuration de stockage de phpMyAdmin

  • mettre le nom de la table dans $cfg['Servers'][$i]['column_info'] (par ex. pma__column_info)

  • pour mettre à jour votre table PRE-2.5.0 Column_comments, utilisez ceci : et souvenez-vous que la variable dans config.inc.php a été renommée de $cfg['Servers'][$i]['column_comments'] en $cfg['Servers'][$i]['column_info']

    ALTER TABLE `pma__column_comments`
    ADD `mimetype` VARCHAR( 255 ) NOT NULL,
    ADD `transformation` VARCHAR( 255 ) NOT NULL,
    ADD `transformation_options` VARCHAR( 255 ) NOT NULL;
    
  • pour mettre à jour votre table PRE-4.3.0 Column_info manuellement, utilisez ce script SQL : ./sql/upgrade_column_info_4_3_0+.sql.

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

Note

Pour que la fonctionnalité de mise à jour automatique fonctionne, votre $cfg['Servers'][$i]['controluser'] doit avoir le privilège ALTER sur la base de données phpmyadmin. Consulter la Documentation MySQL au sujet de GRANT pour savoir comment donner le privilège GRANT à un utilisateur.

$cfg['Servers'][$i]['history']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 2.5.0.

Depuis la version 2.5.0, vous pouvez stocker votre historique SQL, ce qui signifie toutes les requêtes que vous saisissez manuellement dans l’interface de phpMyAdmin. Si vous ne voulez pas utiliser un historique stocké dans une table, vous pouvez choisir un historique utilisant JavaScript.

En utilisant $cfg['QueryHistoryMax'], vous pouvez spécifier le nombre d’entrées de l’historique que vous voulez conserver. À chaque connexion, cette liste est réduite au nombre maximum d’entrées.

La requête historique n’est disponible que si JavaScript est activé dans votre navigateur.

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['recent']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 3.5.0.

Depuis la version 3.5.0, vous pouvez afficher les tables récemment utilisées dans le panneau de navigation à gauche. C’est utile pour se rendre directement sur une table sans avoir besoin de la sélectionner dans la base. En utilisant $cfg['NumRecentTables'] vous pouvez configurer le nombre maximum de tables récentes à afficher. En sélectionnant une table dans cette liste, cela vous amènera directement à la page spécifiée dans $cfg['NavigationTreeDefaultTabTable'].

Sans configurer le stockage, vous pouvez toujours accéder aux tables récemment utilisées, mais elles disparaîtront après votre déconnexion.

Pour pouvoir utiliser cette fonctionnalité de façon persistante :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['favorite']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 4.2.0.

Depuis la version 4.2.0, vous pouvez afficher la liste des tables sélectionnées dans le panneau de navigation à gauche. C’est utile pour se rendre directement sur une table sans avoir besoin sélectionner la base, puis la table. Quand vous sélectionnez une table dans la liste, cela ira dans la page spécifiée dans $cfg['NavigationTreeDefaultTabTable'].

Vous pouvez ajouter ou retirer des tables de cette liste dans la page structure de la base de données en cliquant sur les icônes étoile à côté du nom des tables. En utilisant $cfg['NumFavoriteTables'] vous pouvez définir le nombre maximum de tables favorites à afficher.

Sans configurer le stockage, vous pouvez toujours accéder aux tables favorites, mais elles disparaîtront après votre déconnexion.

Pour pouvoir utiliser cette fonctionnalité de façon persistante :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['table_uiprefs']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 3.5.0.

Depuis la version 3.5.0, phpMyAdmin peut être configuré pour se rappeler diverses choses (colonne triée $cfg['RememberSorting'], ordre des colonnes et visibilité des colonnes dans une table) pour la navigation dans les tables. Sans configurer le stockage, ces fonctionnalités peuvent être utilisées mais les valeurs disparaîtront après votre déconnexion.

Pour pouvoir utiliser cette fonctionnalité de façon persistante :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['users']
Type:chaîne ou false
Valeur par défaut:
 ''

La table utilisée par phpMyAdmin pour stocker les informations sur les noms d’utilisateurs afin de les associer à des groupes d’utilisateurs. Voir l’entrée suivante sur $cfg['Servers'][$i]['usergroups'] pour plus de détails et les paramètres suggérés.

$cfg['Servers'][$i]['usergroups']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 4.1.0.

Depuis la version 4.1.0, vous pouvez créer différents groupes d’utilisateurs avec des éléments de menu qui y sont attachés. Les utilisateurs peuvent être affectés à ces groupes et l’utilisateur connecté ne devrait voir que les éléments de menu configurés pour le groupe d’utilisateurs auquel ils sont affectés. Pour ce faire, il lui faut deux tables « groupes d’utilisateurs » (enregistrement des éléments de menu autorisés pour chaque groupe d’utilisateurs) et « utilisateurs » (enregistrement des utilisateurs et de leurs affectations aux groupes d’utilisateurs).

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée également en définissant la configuration à false.

$cfg['Servers'][$i]['navigationhiding']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 4.1.0.

Depuis la version 4.1.0, vous pouvez masquer/afficher les éléments dans l’arbre de navigation.

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['central_columns']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 4.3.0.

Depuis la version 4.3.0, vous pouvez avoir une liste centrale des colonnes par base de données. Vous pouvez ajouter/retirer des colonnes à la liste selon votre convenance. Ces colonnes de la liste centrale seront disponibles lorsque vous créerez une nouvelle colonne pour une table ou une nouvelle table. Vous pouvez sélectionner une colonne de la liste centrale lors de la création d’une nouvelle colonne. Cela vous épargnera de saisir la même définition de colonne encore et encore, ou de saisir des noms différents pour des colonnes similaires.

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['designer_settings']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 4.5.0.

Depuis la version 4.5.0 les paramètres du Concepteur peuvent être mémorisés. Le choix concernant « Liens angulaires / Directs », « Accrocher à la grille », « Commuter les lignes de relations », « Agrandir / Réduire tout », « Déplacer le menu » et « Épingler le texte » peut être mémorisé de manière persistante.

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['savedsearches']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 4.2.0.

Depuis la version 4.2.0, vous pouvez enregistrer et charger des requêtes « query-by-example » à partir du menu Base de données > Panneau de requêtes.

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['export_templates']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 4.5.0.

Depuis la version 4.5.0, vous pouvez enregistrer et charger des modèles d’exportation.

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['tracking']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 3.3.x.

Depuis la version 3.3.x, un mécanisme de suivi est disponible. Il vous aide à suivre toutes les commandes SQL exécutées par phpMyAdmin. Le mécanisme gère la journalisation de la manipulation de données et les déclarations de définition de données. Après son activation, vous pouvez créer des versions de tables.

La création d’une version a deux effets :

  • phpMyAdmin enregistre un cliché de la table, y compris sa structure et ses index.
  • phpMyAdmin journalise toutes les commandes qui modifie la structure et/ou les données de la table et lie ces commandes au numéro de la version.

Bien sûr, vous pouvez voir les modifications suivies. Dans la page Tracking, un rapport complet est disponible pour chaque version. Pour le rapport, vous pouvez utiliser des filtres, par exemple, vous pouvez obtenir une liste des déclarations dans un intervalle de temps donné. Si vous voulez filtrer les noms d’utilisateurs, vous pouvez saisir « * » pour tous les noms ou une liste de nom séparés par des virgules (« , »). De plus, vous pouvez exporter le rapport (filtré) dans un fichier ou une base de données temporaire.

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['tracking_version_auto_create']
Type:booléen
Valeur par défaut:
 false

Définir si le mécanisme de suivi crée automatiquement des versions pour les tables et les vues.

Si ceci est défini à « true » et que vous créez une table ou une vue avec

  • CREATE TABLE …
  • CREATE VIEW …

et qu’il n’existe pas de version pour celle-ci, le mécanisme de suivi créera automatiquement une version pour vous.

$cfg['Servers'][$i]['tracking_default_statements']
Type:chaîne
Valeur par défaut:
 'CREATE TABLE,ALTER TABLE,DROP TABLE,RENAME TABLE,CREATE INDEX,DROP INDEX,INSERT,UPDATE,DELETE,TRUNCATE,REPLACE,CREATE VIEW,ALTER VIEW,DROP VIEW,CREATE DATABASE,ALTER DATABASE,DROP DATABASE'

Définir la liste des instructions que le mécanisme d’auto-création utilise pour les nouvelles versions.

$cfg['Servers'][$i]['tracking_add_drop_view']
Type:booléen
Valeur par défaut:
 true

Si une instruction DROP VIEW IF EXISTS sera ajoutée en première ligne dans le journal lors de la création de la vue.

$cfg['Servers'][$i]['tracking_add_drop_table']
Type:booléen
Valeur par défaut:
 true

Si une instruction DROP TABLE IF EXISTS sera ajoutée en première ligne du journal lors de la création d’une table.

$cfg['Servers'][$i]['tracking_add_drop_database']
Type:booléen
Valeur par défaut:
 true

Si une instruction DROP DATABASE IF EXISTS sera ajoutée en première ligne du journal lors de la création d’une base de données.

$cfg['Servers'][$i]['userconfig']
Type:chaîne ou false
Valeur par défaut:
 ''

Nouveau dans la version 3.4.x.

Depuis la version 3.4.x, phpMyAdmin permet aux utilisateurs de définir eux-mêmes la plupart des préférences et de les stocker en base de données.

Si vous n’autorisez pas le stockage des préférences dans $cfg['Servers'][$i]['pmadb'], les utilisateurs pourront quand même personnaliser phpMyAdmin, mais les paramètres seront enregistrés dans le stockage local du navigateur, ou, si indisponible, jusqu’à la fin de la session.

Pour pouvoir utiliser cette fonctionnalité :

Cette fonctionnalité peut être désactivée en définissant la configuration à false.

$cfg['Servers'][$i]['MaxTableUiprefs']
Type:entier
Valeur par défaut:
 100

Nombre maximum de lignes enregistrées dans la table $cfg['Servers'][$i]['table_uiprefs'].

Quand les tables sont supprimées ou renommées, $cfg['Servers'][$i]['table_uiprefs'] peut contenir des données invalides (se référant à des tables qui n’existent plus). Nous ne conservons que ce nombre des lignes les plus récentes dans $cfg['Servers'][$i]['table_uiprefs'] et supprimons automatiquement les lignes plus anciennes.

$cfg['Servers'][$i]['SessionTimeZone']
Type:chaîne
Valeur par défaut:
 ''

Définit le fuseau horaire utilisé par phpMyAdmin. Laisser vide pour utiliser le fuseau horaire de votre serveur de base de données. Les valeurs autorisées sont expliquées dans https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html

Ceci est utile quand votre serveur de base de données utilise un fuseau horaire différent de celui que vous voulez utiliser dans phpMyAdmin.

$cfg['Servers'][$i]['AllowRoot']
Type:booléen
Valeur par défaut:
 true

Autoriser ou non un accès à la racine. Il s’agit seulement d’un raccourci pour les règles $cfg['Servers'][$i]['AllowDeny']['rules'] ci-dessous.

$cfg['Servers'][$i]['AllowNoPassword']
Type:booléen
Valeur par défaut:
 false

Permet d’autoriser les connexions sans mot de passe. La valeur par défaut est false pour ce paramètre, ce qui empêche les accès non voulus à un serveur MySQL pour lequel le mot de passe root est vide ou pour lequel un utilisateur anonyme (vide) a été défini.

$cfg['Servers'][$i]['AllowDeny']['order']
Type:chaîne
Valeur par défaut:
 ''

Si votre règle « order » est vide, alors l’autorisation IP est désactivée.

Si votre règle « order » est définie à 'deny,allow' alors le système applique toutes les règles « deny » puis les règles « allow ». L’accès est autorisé par défaut. Tout client qui ne répondrait pas à une commande « deny » ou « allow » sera autorisé à accéder au serveur.

Si votre règle « order » est définie à 'allow,deny' alors le système applique toutes les règles « allow » puis les règles « deny ». L’accès est refusé par défaut. Tout client qui ne répondrait pas à une directive « allow » ou « deny » se verra refuser l’accès au serveur.

Si votre règle « order » est définie à 'explicit', l’authentification est réalisée de manière similaire à la règle “deny,allow”, avec en plus la restriction que la combinaison de votre hôte/nom d’utilisateur doit être présente dans les règles « allow », et pas dans les règles « deny ». C’est le moyen le plus sûr d’utiliser les règles allow/deny, et qui est employé pour Apache pour spécifier les règles allow et deny sans définir d’ordre.

Veuillez également consulter $cfg['TrustedProxies'] pour la détection d’adresse IP derrière des serveurs mandataires.

$cfg['Servers'][$i]['AllowDeny']['rules']
Type:tableau chaînes
Valeur par défaut:
 array()

Le format général des règles est le suivant :

<'allow' | 'deny'> <username> [from] <ipmask>

Si vous voulez que cela concerne tous les utilisateurs, il est possible d’utiliser un symbole '%' comme méta-caractère dans le champ username.

Il y a quelques raccourcis que vous pouvez utiliser dans le champ ipmask (notez que ceux contenant SERVER_ADDRESS ne sont pas disponibles sur tous les serveurs web) :

'all' -> 0.0.0.0/0
'localhost' -> 127.0.0.1/8
'localnetA' -> SERVER_ADDRESS/8
'localnetB' -> SERVER_ADDRESS/16
'localnetC' -> SERVER_ADDRESS/24

Avoir une liste de règles vide est équivalent à l’utilisation de 'allow % from all' si l’ordre de votre règle est définie à 'deny,allow' ou 'deny % from all' si l’ordre de votre règle est définie à 'allow,deny' ou 'explicit'.

Pour le système de concordance IP Address, ce qui suit fonctionne :

  • xxx.xxx.xxx.xxx (une IP Address exacte)
  • xxx.xxx.xxx.[yyy-zzz] (une plage d”  IP Address)
  • xxx.xxx.xxx.xxx/nn (CIDR, adresses IP de type Classless Inter-Domain Routing – routage inter-domaine sans classe)

Mais ce qui suit ne fonctionne pas :

  • xxx.xxx.xxx.xx[yyy-zzz] (plage partielle d’adresses IP)

Pour les adresses IPv6, ce qui suit fonctionne :

  • xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx (une adresse IPv6 exacte)
  • xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:[yyyy-zzzz] (une plage d’adresses IPv6)
  • xxxx.xxxx.xxxx.xxxx/nn (CIDR, adresses IPv6 de type Classless Inter-Domain Routing – routage inter-domaine sans classe)

Mais ce qui suit ne fonctionne pas :

  • xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx[yyy-zzz] (plage partielle d’adresses IPv6)

Exemples :

$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow bob from all'];
// Allow only 'bob' to connect from any host

$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow mary from 192.168.100.[50-100]'];
// Allow only 'mary' to connect from host 192.168.100.50 through 192.168.100.100

$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow % from 192.168.[5-6].10'];
// Allow any user to connect from host 192.168.5.10 or 192.168.6.10

$cfg['Servers'][$i]['AllowDeny']['order'] = 'allow,deny';
$cfg['Servers'][$i]['AllowDeny']['rules'] = ['allow root from 192.168.5.50','allow % from 192.168.6.10'];
// Allow any user to connect from 192.168.6.10, and additionally allow root to connect from 192.168.5.50
$cfg['Servers'][$i]['DisableIS']
Type:booléen
Valeur par défaut:
 false

Désactiver en utilisant INFORMATION_SCHEMA pour retrouver les informations (utiliser des commandes SHOW à la place), à cause de problèmes de performances quand il y a beaucoup de bases de données.

Note

Activer cette option pourrait donner un gain de performance notable sur les serveurs MySQL plus anciens.

$cfg['Servers'][$i]['SignonScript']
Type:chaîne
Valeur par défaut:
 ''

Nouveau dans la version 3.5.0.

Le nom du script PHP qui doit être exécuté pour obtenir les crédentiels de connexion. C’est une approche alternative aux sessions basées sur le single signon. Le script doit fournir la fonction appelée get_login_credentials qui renvoie le nom d’utilisateur et le mot de passe, en acceptant un seul paramètre d’utilisateur existant (peut être vide). Consulter examples/signon-script.php pour un exemple :

<?php
/**
 * Single signon for phpMyAdmin
 *
 * This is just example how to use script based single signon with
 * phpMyAdmin, it is not intended to be perfect code and look, only
 * shows how you can integrate this functionality in your application.
 */

declare(strict_types=1);

// phpcs:disable Squiz.Functions.GlobalFunction

/**
 * This function returns username and password.
 *
 * It can optionally use configured username as parameter.
 *
 * @param string $user User name
 *
 * @return array<int,string>
 */
function get_login_credentials(string $user): array
{
    /* Optionally we can use passed username */
    if (! empty($user)) {
        return [$user, 'password'];
    }

    /* Here we would retrieve the credentials */
    return ['root', ''];
}
$cfg['Servers'][$i]['SignonSession']
Type:chaîne
Valeur par défaut:
 ''

Nom de la session que sera utilisée pour la méthode d’authentification signon. Vous devrez utiliser quelque chose de différent de phpMyAdmin, car c’est le nom de session qu’utilise phpMyAdmin en interne. N’est pris en compte que si $cfg['Servers'][$i]['SignonScript'] n’est pas configuré.

$cfg['Servers'][$i]['SignonCookieParams']
Type:array
Valeur par défaut:
 array()

Nouveau dans la version 4.7.0.

Un tableau associatif de paramètres de cookies de session d’autres systèmes d’authentification. Ce n’est pas nécessaire si l’autre système n’utilise pas session_set_cookie_params(). Les clés doivent contenir « lifetime », « path », « domain », « secure » ou « httponly ». Les valeurs valides sont mentionnées dans session_get_cookie_params, et devraient être définies avec les mêmes valeurs que celles utilisées par l’autre application. N’a d’effet que si $cfg['Servers'][$i]['SignonScript'] n’est pas configuré.

$cfg['Servers'][$i]['SignonURL']
Type:chaîne
Valeur par défaut:
 ''

URL où sera redirigé l’utilisateur pour se connecter avec le mode d’authentification “signon”. Doit être absolue et inclure le protocole.

$cfg['Servers'][$i]['LogoutURL']
Type:chaîne
Valeur par défaut:
 ''

URL où sera redirigé l’utilisateur après la déconnexion (ceci n’affecte pas la mode d’authentification “config”). Doit être absolue et inclure le protocole.

$cfg['Servers'][$i]['hide_connection_errors']
Type:booléen
Valeur par défaut:
 false

Nouveau dans la version 4.9.8.

Quand afficher ou masquer les erreurs de connexions MySQL/MariaDB détaillées sur la page d’identification.

Note

Ce message d’erreur peut contenir le nom d’hôte ou l’adresse IP du serveur de base de donnée cible, ce qui peut donner des informations sur votre réseau à un pirate.

Paramètres génériques

$cfg['DisableShortcutKeys']
Type:booléen
Valeur par défaut:
 false

Vous pouvez aussi désactiver les raccourcis en définissant à true $cfg['SuhosinDisableWarning'].

$cfg['ServerDefault']
Type:entier
Valeur par défaut:
 1

Si vous avez plus d’un serveur, vous pouvez définir $cfg['ServerDefault'] sur n’importe lequel d’entre eux pour s’auto-connecter sur celui-ci quand phpMyAdmin est démarré, ou le définir à 0 sur tous les serveurs pour avoir une liste de serveurs auxquels se connecter.

Si vous n’avez qu’un seul serveur, $cfg['ServerDefault'] DOIT être défini sur ce serveur.

$cfg['VersionCheck']
Type:booléen
Valeur par défaut:
 true

Active la vérification des dernières versions en utilisant JavaScript sur la page principale de phpMyAdmin par un accès direct à index.php.route=/version_check.php.

Note

Ce paramètre peut être ajusté par votre vendeur.

$cfg['ProxyUrl']
Type:chaîne
Valeur par défaut:
 ''

L’URL du serveur mandataire à utiliser quand phpMyAdmin doit accéder à Internet comme par exemple pour récupérer l’information au sujet de la plus récente version de phpMyAdmin ou pour envoyer des rapports d’erreur. Ceci est nécessaire si le serveur sur lequel phpMyAdmin est installé n’a pas d’accès direct à Internet. Le format est « nom de serveur:numéro de port »

$cfg['ProxyUser']
Type:chaîne
Valeur par défaut:
 ''

Le code utilisateur pour s’authentifier sur le serveur mandataire. Par défaut, aucune authentification n’est utilisée. Si un code utilisateur est fourni, l’authentification de base sera utilisée. Aucun autre type d’authentification n’est permis pour le moment.

$cfg['ProxyPass']
Type:chaîne
Valeur par défaut:
 ''

Le mot de passe pour s’authentifier sur le serveur mandataire.

$cfg['MaxDbList']
Type:entier
Valeur par défaut:
 100

Le nombre maximum de noms de bases de données à afficher dans la liste des bases de données.

$cfg['MaxTableList']
Type:entier
Valeur par défaut:
 250

Le nombre maximum de tables à afficher dans le panneau principal (sauf sur le panneau Exporter).

$cfg['ShowHint']
Type:booléen
Valeur par défaut:
 true

Affichage ou pas des astuces (par exemple, les astuces lors du survol des en-têtes de tables par la souris).

$cfg['MaxCharactersInDisplayedSQL']
Type:entier
Valeur par défaut:
 1000

Le nombre maximum de caractères d’une requête SQL à afficher. La limite par défaut de 1000 devrait être correcte pour éviter l’affichage de tonnes de code hexadécimal représentant des BLOB, mais certains utilisateurs ont de vraies requêtes SQL qui dépassent 1000 caractères. Également, si la longueur d’une requête excède cette limite, la requête n’est pas conservée dans l’historique.

$cfg['PersistentConnections']
Type:booléen
Valeur par défaut:
 false

Indique si les connexions persistantes doivent être utilisées ou pas.

$cfg['ForceSSL']
Type:booléen
Valeur par défaut:
 false

Obsolète depuis la version 4.6.0: Ce paramètre n’est plus disponible depuis phpMyAdmin 4.6.0. Veuillez adapter la configuration de votre serveur Web en conséquence.

Pour forcer ou pas l’utilisation de https lors de l’accès à phpMyAdmin. Dans une configuration de proxy inverse, paramétrer ceci à true n’est pas pris en charge.

Note

Dans certaines configurations −comme un proxy SSL séparé ou un équilibreur de charge (load balancer)− vous pourriez avoir besoin de définir $cfg['PmaAbsoluteUri'] pour avoir une redirection correcte.

$cfg['MysqlSslWarningSafeHosts']
Type:array
Valeur par défaut:
 ['127.0.0.1', 'localhost']

Cette recherche est sensible à la casse et ne correspondra qu’à la chaîne exacte. Si votre installation n’utilise pas le SSL mais est sûre parce que vous utilisez une connexion locale ou un réseau privé, vous pouvez ajouter votre nom d’hôte ou IP à la liste. Vous pouvez également supprimer les entrées par défaut pour n’inclure que les vôtres.

Cette vérification utilise la valeur de $cfg['Servers'][$i]['host'].

Nouveau dans la version 5.1.0.

Exemple de configuration

$cfg['MysqlSslWarningSafeHosts'] = ['127.0.0.1', 'localhost', 'mariadb.local'];
$cfg['ExecTimeLimit']
Type:entier [nombre de secondes]
Valeur par défaut:
 300

Définit le nombre de secondes pendant lequel un script est autorisé à s’exécuter. Si ce chiffre est zéro, aucune limite de temps n’est imposée. Ce paramètre est utilisé lors de l’importation/exportation de fichiers dump et dans la fonctionnalité de synchronisation mais n’a aucun effet lorsque PHP est exécuté en mode sécurisé.

$cfg['SessionSavePath']
Type:chaîne
Valeur par défaut:
 ''

Chemin de stockage des données de session (session_save_path PHP parameter).

Avertissement

Ce dossier ne doit pas être publiquement accessible via le serveur web, sinon vous risquez la fuite de données privées provenant de votre session.

$cfg['MemoryLimit']
Type:chaîne [nombre d’octets]
Valeur par défaut:
 '-1'

Définit le nombre d’octets qu’un script est autorisé à allouer. Si ce nombre est défini à '-1', aucune limite n’est imposée. S’il est défini à '0', aucun changement à la limite de mémoire n’est tenté et le réglage de php.ini memory_limit est utilisé.

Ce paramètre est utilisé lors de l’importation/exportation de fichiers de listage, il ne faut donc pas mettre une valeur trop basse ici. Il n’a aucun effet lorsque PHP est exécuté en mode sécurisé.

Vous pouvez aussi utiliser une chaîne comme dans le fichier php.ini, par ex. “16M”. Assurez-vous de ne pas oublier le suffixe (16 signifie 16 octets !)

$cfg['SkipLockedTables']
Type:booléen
Valeur par défaut:
 false

Marque les tables utilisées et permet de montrer les bases de données avec des tables verrouillées (depuis la version MySQL 3.23.30).

$cfg['ShowSQL']
Type:booléen
Valeur par défaut:
 true

Définit si les requêtes SQL générées par phpMyAdmin doivent être affichées.

$cfg['RetainQueryBox']
Type:booléen
Valeur par défaut:
 false

Définit si la boîte de requête SQL doit rester affichée après soumission de la requête.

$cfg['CodemirrorEnable']
Type:booléen
Valeur par défaut:
 true

Définit s’il faut utiliser un éditeur de code JavaScript pour les boîtes de requêtes. CodeMirror fournit la coloration syntaxique et la numérotation des lignes. Cependant, un double clic pour copier des contenus dans le presse-papiers dans certaines distributions GNU/Linux (comme Ubuntu) n’est pas supporté dans tous les navigateurs.

$cfg['LintEnable']
Type:booléen
Valeur par défaut:
 true

Nouveau dans la version 4.5.0.

Définit si l’analyseur syntaxique doit être utilisé pour trouver les erreurs éventuelles dans la requête avant de l’exécuter.

$cfg['DefaultForeignKeyChecks']
Type:chaîne
Valeur par défaut:
 'default'

La valeur par défaut de la case à cocher pour la vérification des clés étrangères, qui sert à désactiver/activer les vérification de clés étrangères pour certaines requêtes. Les valeurs possibles sont « Valeur par défaut du serveur », « Activer » ou « Désactiver ». Si « Valeur par défaut du serveur » est sélectionné, la valeur de la variable MySQL FOREIGN_KEY_CHECKS est utilisée.

$cfg['AllowUserDropDatabase']
Type:booléen
Valeur par défaut:
 false

Avertissement

Ceci n’est pas une mesure de sécurité car il existera toujours des moyens de la contourner. Si vous voulez empêcher les utilisateurs de supprimer des bases de données, révoquez leurs privilèges DROP correspondant.

Définit si les utilisateurs lambda (non administrateur) sont autorisés à supprimer leur propre base de données. S’il est défini à FALSE, le lien guilabel:Supprimer la base ne sera pas visible, et même la commande DROP DATABASE ma_base_de_donnees sera rejetée. Très pratique pour un FAI avec beaucoup de clients.

Veuillez noter que cette limitation des requêtes SQL n’est pas aussi stricte en utilisant les privilèges MySQL. Cela est dû à la nature des requêtes SQL qui peuvent être très compliquées. Aussi, ce choix doit être vu comme une aide pour éviter une suppression accidentelle plutôt qu’une limitation de privilèges stricte.

$cfg['Confirm']
Type:booléen
Valeur par défaut:
 true

Définit si un avertissement (« Êtes-vous vraiment sûr… ») doit être affiché quand vous êtes sur le point de perdre des données.

$cfg['UseDbSearch']
Type:booléen
Valeur par défaut:
 true

Définit si « rechercher une chaîne dans la base de données » est activé.

$cfg['IgnoreMultiSubmitErrors']
Type:booléen
Valeur par défaut:
 false

Définit si phpMyAdmin continuera à exécuter une requête multiple si l’une d’elles échoue. Par défaut, l’exécution de la requête multiple sera arrêtée.

$cfg['enable_drag_drop_import']
Type:booléen
Valeur par défaut:
 true

Si oui ou non, la fonctionnalité drag&drop est activée. Lorsqu’elle est activée, un utilisateur peut déposer un fichier dans son navigateur et phpMyAdmin essaiera d’importer le fichier.

$cfg['URLQueryEncryption']
Type:booléen
Valeur par défaut:
 false

Nouveau dans la version 4.9.8.

Définir si phpMyAdmin chiffrera les données sensibles (comme le nom de la base de données et le nom de la table) dans la chaîne de requête URL. La valeur par défaut est de ne pas chiffrer la chaîne de requête URL.

$cfg['URLQueryEncryptionSecretKey']
Type:chaîne
Valeur par défaut:
 ''

Nouveau dans la version 4.9.8.

Une clé secrète pour dé/crypter la requête dans l’URL. Doit faire 32 octets de long.

$cfg['maxRowPlotLimit']
Type:entier
Valeur par défaut:
 500

Nombre maximum de lignes récupérées pour la recherche par zoom.

Panneau principal

$cfg['ShowStats']
Type:booléen
Valeur par défaut:
 true

Définit s’il faut afficher ou non les statistiques et l’usage de l’espace de stockage des bases de données et des tables. Les statistiques nécessitent au moins la version 3.23.3 de MySQL 3.23.3 et, à ce jour, MySQL ne fournit pas de telles informations pour les tables de base de données Berkeley.

$cfg['ShowServerInfo']
Type:booléen|chaîne
Valeur par défaut:
 true

Définit si l’affichage des informations détaillées sur le serveur doit se faire sur la page principale. Les valeurs possibles sont :

  • true pour afficher toutes les informations serveur
  • false pour cacher les informations serveur
  • 'database-server' pour n’afficher que les informations du serveur de base de données
  • 'web-server' pour n’afficher que les informations du serveur web

You can additionally hide more information by using $cfg['Servers'][$i]['verbose'].

Modifié dans la version 6.0.0: Ajout des options 'database-server' et 'web-server'.

$cfg['ShowPhpInfo']
Type:booléen
Valeur par défaut:
 false

Définit si Informations PHP est affiché dans le cadre principal (de droite) de démarrage.

Veuillez noter que pour empêcher l’utilisation de phpinfo() dans les scripts, vous devez mettre ceci dans votre fichier php.ini :

disable_functions = phpinfo()

Avertissement

En activant la page phpinfo, vous perdrez beaucoup d’informations sur la configuration du serveur. Il n’est pas recommandé de l’activer sur les installations partagées.

Cela pourrait également rendre certaines attaques à distance plus facile sur vos installations, activez donc ceci seulement lorsque c’est nécessaire.

$cfg['ShowChgPassword']
Type:booléen
Valeur par défaut:
 true

Définit si Modifier le mot de passe est affiché dans le cadre principal (de droite) de démarrage. Ce paramètre ne vérifie pas les commandes MySQL saisies directement.

Merci de noter qu’activer le lien Modifier le mot de passe n’a pas d’effet avec le mode d’authentification « config » : leur mot de passe étant codé dans le fichier de configuration, les utilisateurs n’ont pas la possibilité de le modifier.

$cfg['ShowCreateDb']
Type:booléen
Valeur par défaut:
 true

Définit si on affiche ou pas le formulaire de création de base de données dans le cadre principal (de droite) de démarrage. Ce paramètre ne vérifie pas les commandes MySQL saisies directement.

$cfg['ShowGitRevision']
Type:booléen
Valeur par défaut:
 true

Définit s’il faut afficher des informations sur la révision Git actuelle (le cas échéant) sur le panneau principal.

$cfg['MysqlMinVersion']
Type:array

Définit la version minimum de MySQL qui est supportée. La version par défaut est choisie par l’équipe phpMyAdmin ; cependant ce paramètre a été demandé par un développeur du panneau de contrôle Plesk pour faciliter l’intégration avec d’anciens serveurs MySQL (où la plupart des fonctionnalités de phpMyAdmin sont possibles).

Structure de base de données

$cfg['ShowDbStructureCharset']
Type:booléen
Valeur par défaut:
 false

Defines whether to show a column displaying the charset for all tables in the database structure page.

$cfg['ShowDbStructureComment']
Type:booléen
Valeur par défaut:
 false

Defines whether to show a column displaying the comments for all tables in the database structure page.

$cfg['ShowDbStructureCreation']
Type:booléen
Valeur par défaut:
 false

Définit si la page de structure de base de données (liste des tables) a une colonne « Création » qui s’affiche lorsque chaque table est créée.

$cfg['ShowDbStructureLastUpdate']
Type:booléen
Valeur par défaut:
 false

Définit si la page de structure de base de données (liste des tables) a une colonne « Dernière mise à jour » qui s’affiche pour la date de dernière mise à jour de la table.

$cfg['ShowDbStructureLastCheck']
Type:booléen
Valeur par défaut:
 false

Définit si la page de structure de base de données (liste des tables) a une colonne « Dernière vérification » qui affiche la date de la dernière vérification de la table.

$cfg['HideStructureActions']
Type:booléen
Valeur par défaut:
 true

Définit si les actions sur la structure des tables doivent être masquées dans une liste déroulante « Plus ».

$cfg['ShowColumnComments']
Type:booléen
Valeur par défaut:
 true

Définit si les commentaires des colonnes doivent être affichés dans la vue de structure de table.

Mode de navigation

$cfg['TableNavigationLinksMode']
Type:chaîne
Valeur par défaut:
 'icons'

Définit si les liens vers les tables contiennent des « Icônes », du « Texte » ou « Les deux ».

$cfg['ActionLinksMode']
Type:chaîne
Valeur par défaut:
 'both'

Si défini à icons, les liens vers les propriétés des tables et les menus seront affichés avec des icônes à la place du texte (comme Parcourir, Sélectionner, Insérer, …). Peut être défini à 'both' si vous voulez des icônes ET du texte. Quand cette valeur vaut text il ne sera affiché que du texte.

$cfg['RowActionType']
Type:chaîne
Valeur par défaut:
 'both'

Pour activer ou non l’affichage des icônes ou du texte ou des deux dans le segment action d’une ligne de table. Les valeurs peuvent être 'icons', 'text' ou 'both'.

$cfg['ShowAll']
Type:booléen
Valeur par défaut:
 false

Définit si un utilisateur peut afficher un bouton « Tout afficher » en mode navigation ou dans tous les cas. Par défaut, il est affiché pour les petites tables (moins de 500 lignes) pour éviter les problèmes de performance.

$cfg['MaxRows']
Type:entier
Valeur par défaut:
 25

Nombre de lignes affichées lors de la navigation sur un ensemble de résultats et si aucune clause LIMIT n’est utilisée. Si le nombre des colonnes est supérieur à cette valeur, des liens « Précédent » et « Suivant » seront affichés. Les valeurs possibles sont 25, 50, 100, 250, 500.

$cfg['Order']
Type:chaîne
Valeur par défaut:
 'SMART'

Définit si les colonnes sont affichées en ordre croissant (ASC), décroissant (DESC) ou en ordre « intelligent » (SMART) - c’est-à-dire en ordre décroissant pour les colonnes de type TIME, DATE, DATETIME &amp; TIMESTAMP et croissant pour les autres - par défaut.

Modifié dans la version 3.4.0: Depuis phpMyAdmin 3.4.0, la valeur par défaut est 'SMART'.

$cfg['DisplayBinaryAsHex']
Type:booléen
Valeur par défaut:
 true

Defines whether the « Show binary contents as HEX » browse option is ticked by default.

Nouveau dans la version 3.3.0.

Obsolète depuis la version 4.3.0: Ce paramètre a été supprimé.

$cfg['GridEditing']
Type:chaîne
Valeur par défaut:
 'double-click'

Définit quelle action (double-clic ou clic) déclenche l’édition de la grille. Peut être désactivé avec la valeur disabled.

$cfg['RelationalDisplay']
Type:chaîne
Valeur par défaut:
 'K'

Définit le comportement initial pour Options > Relations. K , qui est la valeur par défaut, affiche la clé alors que D montre colonne d’affichage.

$cfg['SaveCellsAtOnce']
Type:booléen
Valeur par défaut:
 false

Définit s’il faut enregistrer toutes les cellules éditées à la fois en édition de grille.

Mode de modification

$cfg['ProtectBinary']
Type:booléen ou chaîne
Valeur par défaut:
 'blob'

Définit si les colonnes BLOB ou BINARY sont protégés lors de l’affichage du contenu d’une table. Les valeurs valides sont :

  • false pour permettre la modification de toutes les colonnes ;
  • blob pour autoriser la modification de toutes les colonnes sauf les colonnes de type BLOBS ;
  • 'noblob' pour désactiver la modification de toutes les colonnes sauf les colonnes de type BLOBS (le contraire de 'blob') ;
  • 'all' pour interdire la modification des colonnes de types BINARY ou BLOB.
$cfg['ShowFunctionFields']
Type:booléen
Valeur par défaut:
 true

Définit si les champs des fonctions MySQL doivent être affichés en mode modification/insertion. Depuis la version 2.10, l’utilisateur peut changer ce paramètre à partir de l’interface.

$cfg['ShowFieldTypesInDataEditView']
Type:booléen
Valeur par défaut:
 true

Définit si les colonnes type doivent être affichées en mode modification/insertion. L’utilisateur peut changer ce paramètre à partir de l’interface.

$cfg['InsertRows']
Type:entier
Valeur par défaut:
 2

Définit le nombre de lignes par défaut devant être saisies depuis la page d’insertion. Les utilisateurs peuvent le modifier manuellement depuis le bas de cette page pour ajouter/retirer des lignes vides.

$cfg['ForeignKeyMaxLimit']
Type:entier
Valeur par défaut:
 100

S’il y a moins d’éléments que ce nombre dans le jeu de clés étrangères, alors un menu déroulant des clés étrangères est proposé, avec le style décrit dans le paramètre $cfg['ForeignKeyDropdownOrder'].

$cfg['ForeignKeyDropdownOrder']
Type:array
Valeur par défaut:
 array(“content-id”, “id-content”)

Il y a plusieurs méthodes d’affichage pour les champs du menu déroulant des clés étrangères, proposant la clé et sa valeur. Le tableau doit contenir une ou les deux valeurs suivantes : content-id, id-content.

Exporter et importer des paramètres

$cfg['ZipDump']
Type:booléen
Valeur par défaut:
 true
$cfg['GZipDump']
Type:booléen
Valeur par défaut:
 true
$cfg['BZipDump']
Type:booléen
Valeur par défaut:
 true

Définit si on utilise la compression zip/GZip/BZip2 lors de la création de fichiers d’exportation

$cfg['CompressOnFly']
Type:booléen
Valeur par défaut:
 true

Définit si on autorise la compression à la volée pour des exportations au formats GZip/BZip2. Ceci n’affecte pas les plus petites exportations et permet aux utilisateurs d’en créer de plus grandes, qui sans cela, ne tiendraient pas en mémoire, à cause de la limitation mémoire de php. Produit des fichiers contenant plus d’en-têtes GZip/BZip2, mais tous les programmes courants les manipulent correctement.

$cfg['Export']
Type:array
Valeur par défaut:
 array(…)

Dans ce tableau sont définis les paramètres par défaut pour les fichiers d’exportation ; les noms des items sont similaires aux textes vus dans la page d’exportation, de la sorte vous pouvez facilement identifier ce qu’ils signifient.

$cfg['Export']['format']
Type:chaîne
Valeur par défaut:
 'sql'

Format d’exportation par défaut.

$cfg['Export']['method']
Type:chaîne
Valeur par défaut:
 'quick'

Définit le mode d’affichage du formulaire d’export lors de son chargement. Les valeurs permises sont :

  • quick pour afficher le nombre minimum d’options à configurer
  • custom pour afficher toutes les options de configuration disponibles
  • custom-no-form est identique à custom mais n’affiche pas l’option d’export rapide
$cfg['Export']['compression']
Type:chaîne
Valeur par défaut:
 'none'

Méthode de compression de l’exportation par défaut. Les valeurs possibles sont 'none', 'zip' ou 'gzip'.

$cfg['Export']['charset']
Type:chaîne
Valeur par défaut:
 ''

Définit l’encodage pour l’exportation générée. Par défaut, aucune conversion d’encodage n’est effectuée en supposant UTF-8.

$cfg['Export']['file_template_table']
Type:chaîne
Valeur par défaut:
 '@TABLE@'

Modèle de nom de fichier par défaut pour les exportations de tables.

$cfg['Export']['file_template_database']
Type:chaîne
Valeur par défaut:
 '@DATABASE@'

Modèle de nom de fichier par défaut pour les exportations de bases de données.

$cfg['Export']['file_template_server']
Type:chaîne
Valeur par défaut:
 '@SERVER@'

Modèle de nom de fichier par défaut pour les exportations de serveurs.

$cfg['Export']['remove_definer_from_definitions']
Type:booléen
Valeur par défaut:
 false

Supprimer la clause DEFINE des définitions des événements, des vues ou des procédures.

Nouveau dans la version 5.2.0.

$cfg['Import']
Type:array
Valeur par défaut:
 array(…)

Dans ce tableau sont définis les paramètres par défaut pour l’importation. Les noms des éléments sont similaires aux textes affichés dans la page d’importation, de sorte que vous pouvez facilement identifier ce qu’ils signifient.

$cfg['Import']['charset']
Type:chaîne
Valeur par défaut:
 ''

Définit l’encodage pour l’importation. Par défaut, aucune conversion d’encodage n’est effectuée en supposant UTF-8.

$cfg['Schema']
Type:array
Valeur par défaut:
 array(…)
$cfg['Schema']['format']
Type:chaîne
Valeur par défaut:
 'pdf'

Définit le format par défaut pour l’exportation des schémas. Les valeurs possibles sont 'pdf', 'eps', 'dia' ou 'svg'.

Paramètres d’affichage des onglets

$cfg['TabsMode']
Type:chaîne
Valeur par défaut:
 'both'

Définit si les onglets de menu contiennent des « Icônes », du « Texte » ou « les deux ».

$cfg['PropertiesNumColumns']
Type:entier
Valeur par défaut:
 1

Définit le nombre de colonnes qui seront utilisées pour afficher les tables dans la vue propriété de la base de données. En définissant cette variable à une valeur supérieure à un, le type de la base de données sera omis pour offrir plus de place pour l’affichage.

$cfg['DefaultTabServer']
Type:chaîne
Valeur par défaut:
 'welcome'

Définit l’onglet affiché par défaut dans la vue serveur. Les valeurs autorisées sont les traductions équivalentes à :

  • `welcome (recommandé pour les installations multi-utilisateurs)
  • databases,
  • status
  • variables
  • privileges
$cfg['DefaultTabDatabase']
Type:chaîne
Valeur par défaut:
 'structure'

Définit l’onglet affiché par défaut pour la vue base de données. Les valeurs possibles sont les traductions équivalentes à :

  • structure
  • sql
  • search
  • opérations
$cfg['DefaultTabTable']
Type:chaîne
Valeur par défaut:
 'browse'

Définit l’onglet affiché par défaut pour la vue base de données. Les valeurs autorisées sont les traductions équivalentes à :

  • structure
  • sql
  • search
  • insérer
  • afficher

Options PDF

$cfg['PDFPageSizes']
Type:array
Valeur par défaut:
 array('A3', 'A4', 'A5', 'letter', 'legal')

Tableau des différentes tailles de papier possibles pour la création des pages PDF.

Vous ne devriez jamais avoir besoin de modifier cela.

$cfg['PDFDefaultPageSize']
Type:chaîne
Valeur par défaut:
 'A4'

Taille de page par défaut à utiliser pour la création de pages PDF. Les valeurs autorisées sont énumérées dans $cfg['PDFPageSizes'].

Langues

$cfg['DefaultLang']
Type:chaîne
Valeur par défaut:
 'en'

Définit la langue à utiliser par défaut, s’il n’est pas définit par le navigateur ou l’utilisateur. Le fichier de langue correspondant doit être dans locale/code/LC_MESSAGES/phpmyadmin.mo.

$cfg['DefaultConnectionCollation']
Type:chaîne
Valeur par défaut:
 'utf8mb4_general_ci'

Définit la collation utilisée par défaut. Consultez la documentation MySQL pour les jeux de caractères pour obtenir une liste des valeurs possibles.

$cfg['Lang']
Type:chaîne
Valeur par défaut:
 non défini

Force la langue à utiliser. Le fichier de langue correspondant doit être dans locale/code/LC_MESSAGES/phpmyadmin.mo.

$cfg['FilterLanguages']
Type:chaîne
Valeur par défaut:
 ''

Limite la liste des langues disponibles à celle correspondant à une expression régulière donnée. Par exemple, si vous ne voulez que le tchèque et l’anglais, vous devrez définir le filtre suivant : '^(cs|en)'.

$cfg['RecodingEngine']
Type:chaîne
Valeur par défaut:
 'auto'

Pour pouvez choisir ici quelles fonctions seront utilisées pour la conversion de page de code. Les valeurs autorisées sont :

  • 'auto' - utilise automatiquement une fonction disponible (la première testée est iconv, puis mbstring)
  • 'iconv' - utilise les fonctions iconv ou libiconv,
  • 'mb' - utilise l’extension mbstring
  • 'none' - désactive la conversion de l’encodage

Quand la conversion de caractères est activée, cela active un menu déroulant dans les pages d’export et d’import, afin de choisir le jeu de caractères utilisé lors de l’exportation d’un fichier. La valeur par défaut dans ce menu provient de $cfg['Export']['charset'] et $cfg['Import']['charset'].

Modifié dans la version 6.0.0: La prise en charge de l’extension Recode a été supprimée. La valeur 'recode' est ignorée et la valeur par défaut ('auto') est utilisée à la place.

$cfg['IconvExtraParams']
Type:chaîne
Valeur par défaut:
 '//TRANSLIT'

Spécifie des paramètres pour iconv utilisés dans la conversion de jeux de caractères. Voir la documentation iconv pour plus de renseignements. Par défaut //TRANSLIT est utilisé de sorte que les caractères invalides soient substitués.

$cfg['AvailableCharsets']
Type:array
Valeur par défaut:
 array(…)

Jeux de caractères disponibles pour la conversion MySQL. Vous pouvez ajouter le vôtre (n’importe lequel pris en charge par mbstring/iconv) ou supprimer celui dont vous ne vous servez pas. Les jeux de caractères seront affichés dans le même ordre que celui défini ici ; aussi, si vous en utilisez fréquemment quelques-uns, faites-les figurer en début de tableau.

Paramètres du serveur web

$cfg['OBGzip']
Type:chaîne/booléen
Valeur par défaut:
 'auto'

Définit s’il faut utiliser la mise en cache des sorties de GZIP pour améliorer les vitesses de transfert HTTP. Mettre à true/false pour activer/désactiver. Quand défini sur “auto” (chaîne), phpMyAdmin essaie d’activer la mise en cache des sorties et la désactivera automatiquement si votre navigateur a des problèmes avec la mise en cache. IE6, avec un certain correctif, est connu pour provoquer une corruption de données en ayant la mise en cache activée.

$cfg['TrustedProxies']
Type:array
Valeur par défaut:
 array()

Liste les serveurs mandataires et les en-têtes HTTP de confiance pour $cfg['Servers'][$i]['AllowDeny']['order']. Cette liste est vide par défaut. Vous devez renseigner des serveurs mandataires de confiance si vous voulez utiliser des règles pour les adresses IP derrière un serveur mandataire.

L’exemple suivant spécifie que phpMyAdmin doit faire confiance à un en-tête HTTP_X_FORWARDED_FOR (X-Forwarded-For) provenant du serveur mandataire 1.2.3.4 :

$cfg['TrustedProxies'] = ['1.2.3.4' => 'HTTP_X_FORWARDED_FOR'];

La directive $cfg['Servers'][$i]['AllowDeny']['rules'] utilise l’adresse IP du client comme d’habitude.

$cfg['GD2Available']
Type:chaîne
Valeur par défaut:
 'auto'

Spécifie si GD est disponible en version 2 ou supérieure. Si c’est le cas, il peut être utilisé pour les transformations MIME. Les valeurs autorisées sont :

  • auto - détecte automatiquement
  • yes - les fonctions GD 2 peuvent être utilisées,
  • no - les fonctions GD 2 ne peuvent pas être utilisées
$cfg['CheckConfigurationPermissions']
Type:booléen
Valeur par défaut:
 true

Nous vérifions normalement les permissions sur le fichier de configuration pour nous assurer qu’il n’est pas accessible en écriture pour tout le monde. Cependant, phpMyAdmin pourrait être installé sur un système de fichiers NTFS monté sur un serveur non-Windows, auquel cas les permissions semblent erronées mais elles ne peuvent en fait pas être détectées. Dans ce cas, un administrateur système devrait définir ce paramètre à FALSE.

$cfg['LinkLengthLimit']
Type:entier
Valeur par défaut:
 1000

Longueur limite de l”URL dans les liens. Quand la longueur est supérieure à cette limite, le lien est remplacé par un formulaire avec un bouton. Ceci est nécessaire car certains serveurs Web (IIS) ont des problèmes avec les URL longues.

$cfg['CSPAllow']
Type:chaîne
Valeur par défaut:
 ''

Chaîne supplémentaire à inclure dans les sources autorisées de script et d’image dans l’en-tête de la politique de sécurité du contenu.

Cela peut être utile lorsque vous souhaitez inclure des fichiers externes de JavaScript dans config.footer.inc.php ou config.header.inc.php, ce qui ne serait normalement pas autorisé par la Content Security Policy.

Pour permettre certains sites, il suffit de les énumérer à l’intérieur de la chaîne :

$cfg['CSPAllow'] = 'example.com example.net';

Nouveau dans la version 4.0.4.

$cfg['DisableMultiTableMaintenance']
Type:booléen
Valeur par défaut:
 false

Dans la page Structure de la base de données, il est possible de marquer certaines tables puis de choisir une opération comme l’optimisation de plusieurs tables. Ceci peut ralentir le serveur ; par conséquent, définir ceci à true empêche ce type d’opération de maintenance multiple.

Paramètres des thèmes

Veuillez modifier directement themes/themename/scss/_variables.scss, bien que vos changements seront écrasés lors de la prochaine mise à jour.

Personnalisation du design

$cfg['NavigationTreePointerEnable']
Type:booléen
Valeur par défaut:
 true

Lorsque défini à true, placer le curseur sur un élément dans le panneau de navigation provoque le marquage de cet élément (le fond est mis en surbrillance).

$cfg['BrowsePointerEnable']
Type:booléen
Valeur par défaut:
 true

Lorsque défini à true, survoler une ligne dans le volet Afficher provoque le marquage de cette ligne (le fond est mis en surbrillance).

$cfg['BrowseMarkerEnable']
Type:booléen
Valeur par défaut:
 true

Lorsque réglé à la valeur true, une ligne de données est marquée (le fond est mis en surbrillance) lorsque la ligne est sélectionnée avec la case à cocher.

$cfg['LimitChars']
Type:entier
Valeur par défaut:
 50

Nombre maximum de caractères affichés dans un champ non numérique en mode Afficher. Peut être désactivé par un bouton radio dans la page de navigation.

Type:chaîne
Valeur par défaut:
 'left'

Définit l’endroit où les liens modifier, copier et effacer seront placés quand le contenu des tables est affiché (vous pouvez les afficher à gauche, à droite, des deux côtés ou nulle part).

$cfg['RowActionLinksWithoutUnique']
Type:booléen
Valeur par défaut:
 false

Définit si l’on doit afficher les liens relatifs aux lignes (Modifier, Copier, Effacer) et les cases à cocher pour des opérations sur plusieurs lignes, même si la sélection ne comporte pas de unique key. Faire des actions sur des lignes en l’absence d’une clé unique peut faire en sorte que des lignes différentes ou plus de lignes soient affectées puisqu’il n’y a aucun garantie quant à la sélection exacte des lignes.

$cfg['RememberSorting']
Type:booléen
Valeur par défaut:
 true

Si activé, l’ordre de tri des tables est conservé lors de la navigation dans les tables.

$cfg['TablePrimaryKeyOrder']
Type:chaîne
Valeur par défaut:
 'NONE'

Ceci définit l’ordre de tri par défaut des tables possédant une primary key, lorsqu’il n’y a aucun ordre de tri défini à l’externe. Les valeurs possibles sont : [“NONE”, “ASC”, “DESC”]

$cfg['ShowBrowseComments']
Type:booléen
Valeur par défaut:
 true
$cfg['ShowPropertyComments']
Type:booléen
Valeur par défaut:
 true

En définissant la variable correspondante à TRUE, vous pouvez afficher les commentaires de colonnes en mode Navigation ou Propriétés. En mode navigation, les commentaires sont affichés à l’intérieur de l’en-tête. En mode propriétés, les commentaires sont affichés en utilisant une feuille de style qui met une ligne de tirets sous le nom du champ. Le commentaire est affiché en tant qu’info-bulle pour ce champ.

$cfg['FirstDayOfCalendar']
Type:entier
Valeur par défaut:
 0

Ceci définira le premier jour de la semaine dans le calendrier. Le nombre peut être réglé de 0 à 6, ce qui représente les sept jours de la semaine, du dimanche au samedi respectivement. Cette valeur peut également être configurée par l’utilisateur dans le champ Paramètres du serveur -> Fonctionnalités -> Général -> Premier jour du calendrier.

Champs texte

$cfg['CharEditing']
Type:chaîne
Valeur par défaut:
 'input'

Définit quels types de contrôles d’édition doivent être utilisés pour les colonnes CHAR et VARCHAR. Cela s’applique à l’édition des données ainsi qu’aux valeurs par défaut dans l’édition de structure. Les valeurs permises sont :

  • input - ceci permet de limiter la taille du texte en fonction de la taille des colonnes dans MySQL, mais il y a des problèmes avec les caractères « newline » dans les colonnes
  • textarea - aucun problème avec les caractères « newline » dans les colonnes, mais ne permet pas de limitation de taille
$cfg['MinSizeForInputField']
Type:entier
Valeur par défaut:
 4

Définir la taille minimale des champs de saisie générés pour les colonnes CHAR et VARCHAR.

$cfg['MaxSizeForInputField']
Type:entier
Valeur par défaut:
 60

Définir la taille maximale des champs de saisie générés pour les colonnes CHAR et VARCHAR.

$cfg['TextareaCols']
Type:entier
Valeur par défaut:
 40
$cfg['TextareaRows']
Type:entier
Valeur par défaut:
 15
$cfg['CharTextareaCols']
Type:entier
Valeur par défaut:
 40
$cfg['CharTextareaRows']
Type:entier
Valeur par défaut:
 7

Le nombre de colonnes et de lignes pour les zones de text (textareas). Cette valeur sera multipliée par 2 pour les zones de texte de requête SQL et par 1,25 pour les zones de texte SQL à l’intérieur de la fenêtre de requête.

Les valeurs Char* sont utilisées pour la modification de CHAR et VARCHAR (si configurées dans $cfg['CharEditing']).

Modifié dans la version 5.0.0: La valeur par défaut est passée de 2 à 7.

$cfg['LongtextDoubleTextarea']
Type:booléen
Valeur par défaut:
 true

Définit si la zone de texte pour les colonnes LONGTEXT doit avoir une taille double.

$cfg['TextareaAutoSelect']
Type:booléen
Valeur par défaut:
 false

Définit si toute la surface de la zone de texte de la boîte de requête sera sélectionnée en cliquant dessus.

$cfg['EnableAutocompleteForTablesAndColumns']
Type:booléen
Valeur par défaut:
 true

Si vous voulez activer la saisie semi-automatique pour les noms de table et de colonne dans n’importe quelle boîte de requête SQL.

Paramètres de la fenêtre de requête SQL

$cfg['SQLQuery']['Edit']
Type:booléen
Valeur par défaut:
 true

Définit l’affichage d’un lien pour modifier une requête dans toute boîte SQL Query.

$cfg['SQLQuery']['Explain']
Type:booléen
Valeur par défaut:
 true

Définit l’affichage d’un lien pour expliquer une requête SELECT dans toute boîte SQL Query.

$cfg['SQLQuery']['ShowAsPHP']
Type:booléen
Valeur par défaut:
 true

Définit l’affichage d’un lien pour incorporer une requête dans du code PHP dans toute boîte SQL Query.

$cfg['SQLQuery']['Refresh']
Type:booléen
Valeur par défaut:
 true

Définit l’affichage d’un lien pour actualiser une requête dans toute boîte SQL Query.

Les répertoires de transfert/sauvegarde/import du serveur web

Si PHP est exécuté en mode sécurisé, tous les répertoires doivent appartenir au même utilisateur que le propriétaire des scripts phpMyAdmin.

Si le répertoire où est installé phpMyAdmin est sujet à une restriction open_basedir, vous devez créer un répertoire temporaire dans un répertoire accessible par l’interprêteur PHP.

Pour des raisons de sécurité, tous les répertoires doivent être en dehors de l’arbre publié par le serveur Web. Si vous ne pouvez faire autrement, limitez l’accès aux répertoires en utilisant la configuration du serveur Web (par exemple en utilisant des fichiers .htaccess ou web.config) ou placez au moins un fichier index.html vide ici, de sorte que le parcours de répertoires ne soit pas possible. Cependant, tant que le répertoire est accessible par le serveur Web, un attaquant peut deviner les noms de fichiers pour les télécharger.

$cfg['UploadDir']
Type:chaîne
Valeur par défaut:
 ''

Le nom du répertoire où les fichiers SQL ont été transférés autrement qu’avec phpMyAdmin (FTP, par exemple). Ces fichiers sont disponibles sous forme d’une liste déroulante quand vous cliquez sur le nom d’une base de données ou d’une table, puis l’onglet Import.

Si vous voulez un répertoire différent pour chaque utilisateur, %u sera remplacé par le nom d’utilisateur.

Veuillez noter que le nom des fichiers doit avoir le suffixe « .sql » (ou « .sql.bz2 » ou « .sql.gz » si la gestion des formats compressés est activée).

Cette fonctionnalité est utile quand votre fichier est trop gros pour être transféré via HTTP, ou quand les transferts de fichiers sont désactivés dans PHP.

Avertissement

Veuillez consulter le début de ce chapitre (Les répertoires de transfert/sauvegarde/import du serveur web) pour des instructions sur la configuration de ce répertoire et comment le sécuriser.

$cfg['SaveDir']
Type:chaîne
Valeur par défaut:
 ''

Le nom du répertoire du serveur web où les fichiers exportés peuvent être sauvegardés.

Si vous voulez un répertoire différent pour chaque utilisateur, %u sera remplacé par le nom de l’utilisateur.

Veuillez noter que le répertoire doit être accessible en écriture à l’utilisateur du serveur Web.

Avertissement

Veuillez consulter le début de ce chapitre (Les répertoires de transfert/sauvegarde/import du serveur web) pour des instructions sur la configuration de ce répertoire et comment le sécuriser.

$cfg['TempDir']
Type:chaîne
Valeur par défaut:
 './tmp/'

Le nom du répertoire où les fichiers temporaires peuvent être stockés. Il est utilisé pour :

Ce répertoire devra avoir les permissions les plus strictes possibles car le seul utilisateur à devoir accéder à ce répertoire est celui qui exécute le serveur Web. Si vous avez des privilèges root, rendez simplement cet utilisateur propriétaire de ce répertoire, et ne le rendez accessible que par lui :

chown www-data:www-data tmp
chmod 700 tmp

Si vous ne pouvez changer le propriétaire du répertoire, vous pouvez effectuer une configuration similaire en utilisant une ACL :

chmod 700 tmp
setfacl -m "g:www-data:rwx" tmp
setfacl -d -m "g:www-data:rwx" tmp

Si aucune de ces deux solutions ne fonctionne pour vous, vous pouvez toujours faire un chmod 777 sur le répertoire, mais cela pourrait imposer des risques de sécurité aux autres utilisateurs du système qui lisent et écrivent des données dans ce répertoire.

Avertissement

Veuillez consulter le début de ce chapitre (Les répertoires de transfert/sauvegarde/import du serveur web) pour des instructions sur la configuration de ce répertoire et comment le sécuriser.

Divers paramètres d’affichage

$cfg['RepeatCells']
Type:entier
Valeur par défaut:
 100

Répète les en-têtes toutes les X cellules, ou 0 pour désactiver.

$cfg['EditInWindow']
Type:booléen
Valeur par défaut:
 true

Obsolète depuis la version 4.3.0: Ce paramètre a été supprimé.

$cfg['QueryWindowWidth']
Type:entier
Valeur par défaut:
 550

Obsolète depuis la version 4.3.0: Ce paramètre a été supprimé.

$cfg['QueryWindowHeight']
Type:entier
Valeur par défaut:
 310

Obsolète depuis la version 4.3.0: Ce paramètre a été supprimé.

$cfg['QueryHistoryDB']
Type:booléen
Valeur par défaut:
 false
$cfg['QueryWindowDefTab']
Type:chaîne
Valeur par défaut:
 'sql'

Obsolète depuis la version 4.3.0: Ce paramètre a été supprimé.

$cfg['QueryHistoryMax']
Type:entier
Valeur par défaut:
 25

Si $cfg['QueryHistoryDB'] est défini à true, toutes vos requêtes sont journalisées dans une table, que vous devez créer (voir $cfg['Servers'][$i]['history']). S’il est défini à false, toutes vos requêtes seront ajoutées au formulaire, mais elles seront sauvegardées seulement tant que votre fenêtre est ouverte.

En utilisant la fenêtre de requête basée sur JavaScript, elle sera toujours mise à jour quand vous cliquez sur une nouvelle table/base de données à afficher et se réduira si vous cliquez sur Modifier SQL après avoir utilisé une requête. Vous pouvez supprimer la mise à jour de la fenêtre de requête en cochant la case « Ne pas écraser cette requête depuis une autre fenêtre » sous la zone de texte de requête. Alors vous pouvez afficher des tables/bases de données en arrière-plan sans perdre le contenu de la zone de texte, ce qui est particulièrement pratique quand vous faites des requêtes sur des tables dont vous devez d’abord regarder le contenu. La case à cocher sera automatiquement cochée chaque fois que vous changez le contenu de la zone de texte. Décochez cette case si jamais vous vouliez que la fenêtre de requêtes soit toujours mise à jour, même si vous avez fait des modifications.

Si $cfg['QueryHistoryDB'] est défini à true, vous pouvez spécifier le nombre d’entrées sauvegardées dans l’historique en utilisant $cfg['QueryHistoryMax'].

$cfg['AllowSharedBookmarks']
Type:booléen
Valeur par défaut:
 true

Nouveau dans la version 6.0.0.

Permettre aux utilisateurs de créer des signets qui seront accessibles à tous les autres utilisateurs

$cfg['BrowseMIME']
Type:booléen
Valeur par défaut:
 true

Activer les Transformations.

$cfg['MaxExactCount']
Type:entier
Valeur par défaut:
 50000

Pour les tables InnoDB, détermine pour quelle taille de tables phpMyAdmin doit obtenir le nombre de lignes exact avec SELECT COUNT. Si le nombre approximatif de lignes renvoyé par SHOW TABLE STATUS est inférieur à cette valeur, SELECT COUNT sera utilisé, sinon, la valeur approximative sera utilisée.

Modifié dans la version 4.8.0: La valeur par défaut a été abaissée à 50000 pour des raisons de performance.

Modifié dans la version 4.2.6: La valeur par défaut a été changée à 500000.

$cfg['MaxExactCountViews']
Type:entier
Valeur par défaut:
 0

Pour les vues, puisqu’obtenir le compte exact pourrait avoir un impact sur les performances, cette valeur est la valeur maximum à afficher, en utilisant un SELECT COUNT LIMIT. Mettre cette valeur à 0 passe outre tout comptage de lignes.

$cfg['NaturalOrder']
Type:booléen
Valeur par défaut:
 true

Trie les noms des bases de données et des tables en ordre naturel (par exemple, t1, t2, t10). Actuellement mis en œuvre dans le panneau de navigation et dans la vue Base de données, pour la liste des tables.

$cfg['InitialSlidersState']
Type:chaîne
Valeur par défaut:
 'closed'

Si défini à 'closed', les cases de défilement sont initialement dans un état fermé. Une valeur 'open' fait le contraire. Pour désactiver complètement toutes les cases de défilement visuel, utiliser 'disabled'.

$cfg['UserprefsDisallow']
Type:array
Valeur par défaut:
 array()

Contains names of configuration options (keys in $cfg array) that users can’t set through user preferences. For possible values, refer to classes under src/Config/Forms/User/.

$cfg['UserprefsDeveloperTab']
Type:booléen
Valeur par défaut:
 false

Nouveau dans la version 3.4.0.

Active dans les préférences utilisateur un onglet contenant les options pour les développeurs de phpMyAdmin.

Titres de page

Le titre de la page affiché par la barre de titre de la fenêtre ou de l’onglet de votre navigateur peut être personnalisé. Vous pouvez utiliser 6.27 Quels formats de chaînes puis-je utiliser ?. Les quatre options suivantes permettent de personnaliser diverses parties de l’interface de phpMyAdmin. Notez que le titre de la page de connexion ne peut pas être modifié.

$cfg['TitleTable']
Type:chaîne
Valeur par défaut:
 '@HTTP_HOST@ / @VSERVER@ / @DATABASE@ / @TABLE@ | @PHPMYADMIN@'
$cfg['TitleDatabase']
Type:chaîne
Valeur par défaut:
 '@HTTP_HOST@ / @VSERVER@ / @DATABASE@ | @PHPMYADMIN@'
$cfg['TitleServer']
Type:chaîne
Valeur par défaut:
 '@HTTP_HOST@ / @VSERVER@ | @PHPMYADMIN@'
$cfg['TitleDefault']
Type:chaîne
Valeur par défaut:
 '@HTTP_HOST@ | @PHPMYADMIN@'

Paramètres du gestionnaire de thèmes

$cfg['ThemeManager']
Type:booléen
Valeur par défaut:
 true

Active les thèmes sélectionnables par l’utilisateur. Voir 2.7 Utiliser et créer des thèmes.

$cfg['ThemeDefault']
Type:chaîne
Valeur par défaut:
 'pmahome'

Le thème par défaut (un sous-répertoire de ./public/themes/).

$cfg['ThemePerServer']
Type:booléen
Valeur par défaut:
 false

Autorise ou non un thème différent pour chaque serveur.

$cfg['FontSize']
Type:chaîne
Valeur par défaut:
 “82%”

Obsolète depuis la version 5.0.0: Ce réglage a été retiré car le navigateur est plus efficace, et donc il n’y a pas besoin de cette option.

Taille de la police à utilisé, est utilisée dans le CSS.

Requêtes par défaut

$cfg['DefaultQueryTable']
Type:chaîne
Valeur par défaut:
 'SELECT * FROM @TABLE@ WHERE 1'
$cfg['DefaultQueryDatabase']
Type:chaîne
Valeur par défaut:
 ''

Requêtes par défaut qui seront affichées dans les boîtes de requête quand l’utilisateur ne spécifie rien. Vous pouvez utiliser 6.27 Quels formats de chaînes puis-je utiliser ?.

Paramètres MySQL

$cfg['DefaultFunctions']
Type:array
Valeur par défaut:
 array('FUNC_CHAR' => '', 'FUNC_DATE' => '', 'FUNC_NUMBER' => '', 'FUNC_SPATIAL' => 'GeomFromText', 'FUNC_UUID' => 'UUID', 'first_timestamp' => 'NOW')

Fonctions sélectionnées par défaut pour insérer/modifier un enregistrement. Les fonctions sont définies pour les méta-types comme (FUNC_NUMBER, FUNC_DATE, FUNC_CHAR, FUNC_SPATIAL, FUNC_UUID) et pour first_timestamp, qui est utilisé pour la première colonne d’horodatage dans une table.

Exemple de configuration

$cfg['DefaultFunctions'] = [
    'FUNC_CHAR' => '',
    'FUNC_DATE' => '',
    'FUNC_NUMBER' => '',
    'FUNC_SPATIAL' => 'ST_GeomFromText',
    'FUNC_UUID' => 'UUID',
    'first_timestamp' => 'UTC_TIMESTAMP',
];

Options par défaut pour les transformations

$cfg['DefaultTransformations']
Type:array
Valeur par défaut:
 Un tableau avec les clés-valeurs listées ci-dessous
$cfg['DefaultTransformations']['Substring']
Type:array
Valeur par défaut:
 array(0, “tout”, “…”)
$cfg['DefaultTransformations']['Bool2Text']
Type:array
Valeur par défaut:
 array(“T”, “F”)
$cfg['DefaultTransformations']['External']
Type:array
Valeur par défaut:
 array(0, “-f /dev/null -i -wrap -q”, 1, 1)
$cfg['DefaultTransformations']['PreApPend']
Type:array
Valeur par défaut:
 array(“”, “”)
$cfg['DefaultTransformations']['Hex']
Type:array
Valeur par défaut:
 array(“2”)
$cfg['DefaultTransformations']['DateFormat']
Type:array
Valeur par défaut:
 array(0, “”, “local”)
$cfg['DefaultTransformations']['Inline']
Type:array
Valeur par défaut:
 array(“100”, 100)
Type:array
Valeur par défaut:
 array(“”, 100, 50)
Type:array
Valeur par défaut:
 array(“”, “”, “”)

Paramètres de la console

Note

Ces réglages sont principalement à modifier par l’utilisateur.

$cfg['Console']['StartHistory']
Type:booléen
Valeur par défaut:
 false

Afficher l’historique des requêtes au démarrage

$cfg['Console']['AlwaysExpand']
Type:booléen
Valeur par défaut:
 false

Toujours développer les messages

$cfg['Console']['CurrentQuery']
Type:booléen
Valeur par défaut:
 true

Afficher la requête de navigation courante

$cfg['Console']['EnterExecutes']
Type:booléen
Valeur par défaut:
 false

Exécuter les requêtes avec Entrée et insérer une nouvelle ligne avec Maj+Entrée

$cfg['Console']['DarkTheme']
Type:booléen
Valeur par défaut:
 false

Passer au thème sombre

$cfg['Console']['Mode']
Type:chaîne
Valeur par défaut:
 « infos »

Mode console de requêtes SQL

$cfg['Console']['Height']
Type:entier
Valeur par défaut:
 92

Hauteur de la console de requêtes SQL

Développeur

Avertissement

Ces paramètres peuvent avoir un effet énorme sur les performances ou la sécurité.

$cfg['environment']
Type:chaîne
Valeur par défaut:
 'production'

Paramètre l’environnement de travail.

Cela ne doit être modifié que lorsque vous développez phpMyAdmin lui-même. Le mode « développement » peut afficher des informations de débogage à certains endroits.

Les valeurs possibles sont « production » ou « development ».

$cfg['DBG']
Type:array
Valeur par défaut:
 []
$cfg['DBG']['sql']
Type:booléen
Valeur par défaut:
 false

Active la journalisation des requêtes et des temps d’exécution qui sont alors affichés dans la console de l’onglet Debug SQL.

$cfg['DBG']['sqllog']
Type:booléen
Valeur par défaut:
 false

Active la journalisation des requêtes et des temps d’exécution dans syslog. Nécessite que $cfg['DBG']['sql'] soit activé.

$cfg['DBG']['demo']
Type:booléen
Valeur par défaut:
 false

Activer pour permettre au serveur de se présenter comme un serveur de démonstration. Ceci est utilisé pour le serveur de démonstration phpMyAdmin.

Actuellement, il modifie le comportement suivant :

  • Il y a un message d’accueil sur la page principale.
  • Il y a des informations en bas de la page à propos du serveur de démo et de la révision de Git utilisée.
  • Le script d’installation est activé même pour une configuration existante.
  • L’installation n’essaie pas de se connecter au serveur MySQL.
$cfg['DBG']['simple2fa']
Type:booléen
Valeur par défaut:
 false

Peut être utilisé pour tester l’authentification à deux facteurs avec Authentification simple à deux facteurs.

Exemple

Consulter les parties de configuration suivantes pour les configurations typiques de phpMyAdmin.

Exemple de base

Exemple de fichier de configuration qui peut être copié dans config.inc.php pour obtenir une configuration de base pour le rendu. Il est distribué avec phpMyAdmin sous le nom config.sample.inc.php. Veuillez noter qu’il ne contient pas toutes les options de configuration, seulement les plus fréquemment utilisées.

<?php
/**
 * phpMyAdmin sample configuration, you can use it as base for
 * manual configuration. For easier setup you can use setup/
 *
 * All directives are explained in documentation in the doc/ folder
 * or at <https://docs.phpmyadmin.net/>.
 */

declare(strict_types=1);

/**
 * This is needed for cookie based authentication to encrypt the cookie.
 * Needs to be a 32-bytes long string of random bytes. See FAQ 2.10.
 */
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/**
 * Servers configuration
 */
$i = 0;

/**
 * First server
 */
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

/**
 * 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';

/**
 * End of servers configuration
 */

/**
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

/**
 * Whether to display icons or text or both icons and text in table row
 * action segment. Value can be either of 'icons', 'text' or 'both'.
 * default = 'both'
 */
//$cfg['RowActionType'] = 'icons';

/**
 * Defines whether a user should be displayed a "show all (records)"
 * button in browse mode or not.
 * default = false
 */
//$cfg['ShowAll'] = true;

/**
 * Number of rows displayed when browsing a result set. If the result
 * set contains more rows, "Previous" and "Next".
 * Possible values: 25, 50, 100, 250, 500
 * default = 25
 */
//$cfg['MaxRows'] = 50;

/**
 * Disallow editing of binary fields
 * valid values are:
 *   false    allow editing
 *   'blob'   allow editing except for BLOB fields
 *   'noblob' disallow editing except for BLOB fields
 *   'all'    disallow editing
 * default = 'blob'
 */
//$cfg['ProtectBinary'] = false;

/**
 * Default language to use, if not browser-defined or user-defined
 * (you find all languages in the locale folder)
 * uncomment the desired line:
 * default = 'en'
 */
//$cfg['DefaultLang'] = 'en';
//$cfg['DefaultLang'] = 'de';

/**
 * How many columns should be used for table display of a database?
 * (a value larger than 1 results in some information being hidden)
 * default = 1
 */
//$cfg['PropertiesNumColumns'] = 2;

/**
 * Set to true if you want DB-based query history.If false, this utilizes
 * JS-routines to display query history (lost by window close)
 *
 * This requires configuration storage enabled, see above.
 * default = false
 */
//$cfg['QueryHistoryDB'] = true;

/**
 * When using DB-based query history, how many entries should be kept?
 * default = 25
 */
//$cfg['QueryHistoryMax'] = 100;

/**
 * Whether or not to query the user before sending the error report to
 * the phpMyAdmin team when a JavaScript error occurs
 *
 * Available options
 * ('ask' | 'always' | 'never')
 * default = 'ask'
 */
//$cfg['SendErrorReports'] = 'always';

/**
 * 'URLQueryEncryption' defines whether phpMyAdmin will encrypt sensitive data from the URL query string.
 * 'URLQueryEncryptionSecretKey' is a 32 bytes long secret key used to encrypt/decrypt the URL query string.
 */
//$cfg['URLQueryEncryption'] = true;
//$cfg['URLQueryEncryptionSecretKey'] = '';

/**
 * You can find more configuration options in the documentation
 * in the doc/ folder or at <https://docs.phpmyadmin.net/>.
 */

Avertissement

N’utilisez pas l’utilisateur de contrôle “pma” s’il n’existe pas encore et n’utilisez pas “pmapass” comme mot de passe.

Exemple pour l’authentification “signon”

Cet exemple utilise examples/signon.php pour montrer un exemple de l’utilisation de Mode d’authentification “signon” :

<?php
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type']     = 'signon';
$cfg['Servers'][$i]['SignonSession'] = 'SignonSession';
$cfg['Servers'][$i]['SignonURL']     = 'examples/signon.php';

Exemple de limitation de l’adresse IP pour la connexion automatique

Si vous voulez vous connecter automatiquement pour accéder à phpMyAdmin localement, et avec la demande d’un mot de passe pour l’accès à distance, vous pouvez utiliser le bout de code suivant :

if ($_SERVER['REMOTE_ADDR'] === '127.0.0.1') {
    $cfg['Servers'][$i]['auth_type'] = 'config';
    $cfg['Servers'][$i]['user'] = 'root';
    $cfg['Servers'][$i]['password'] = 'yourpassword';
} else {
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
}

Note

Le filtrage basé sur les adresses IP n’est pas fiable sur Internet. Ne l’utiliser que pour les adresses locales.

Exemple pour l’utilisation de plusieurs serveurs MySQL

Vous pouvez configurer plusieurs serveurs en utilisant $cfg['Servers'], l’exemple suivant en propose deux :

<?php
// The string is a hexadecimal representation of a 32-bytes long string of random bytes.
$cfg['blowfish_secret'] = sodium_hex2bin('f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851');
$i = 0;

$i++; // server 1 :
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['verbose']   = 'no1';
$cfg['Servers'][$i]['host']      = 'localhost';
// more options for #1 ...

$i++; // server 2 :
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['verbose']   = 'no2';
$cfg['Servers'][$i]['host']      = 'remote.host.addr';//or ip:'10.9.8.1'
// this server must allow remote clients, e.g., host 10.9.8.%
// not only in mysql.host but also in the startup configuration
// more options for #2 ...

// end of server sections
$cfg['ServerDefault'] = 0; // to choose the server on startup

// further general options ...

Google Cloud SQL avec SSL

Pour se connecter à Google Cloud SQL, vous devez désactiver la vérification de certificat. Ceci survient quant le CN du certificat correspond au nom de votre instance mais que vous vous connectez en utilisant l’adresse IP et PHP essaie de faire correspondre les deux. Quand la vérification est activée, vous obtenez un message d’erreur du type :

Peer certificate CN=`api-project-851612429544:pmatest' did not match expected CN=`8.8.8.8'

Avertissement

En désactivant la vérification, votre trafic est chiffré mais vous êtes vulnérable aux attaque de type « man in the middle ».

Pour connecter phpMyAdmin à Google Cloud SQL en utilisant SSL, télécharger les certificats client et serveur et indiquer à phpMyAdmin de les utiliser :

// IP address of your instance
$cfg['Servers'][$i]['host'] = '8.8.8.8';
// Use SSL for connection
$cfg['Servers'][$i]['ssl'] = true;
// Client secret key
$cfg['Servers'][$i]['ssl_key'] = '../client-key.pem';
// Client certificate
$cfg['Servers'][$i]['ssl_cert'] = '../client-cert.pem';
// Server certification authority
$cfg['Servers'][$i]['ssl_ca'] = '../server-ca.pem';
// Disable SSL verification (see above note)
$cfg['Servers'][$i]['ssl_verify'] = false;

Amazon RDS Aurora avec SSL

Pour connecter phpMyAdmin à une instance Amazon RDS Aurora MySQL en utilisant SSL, télécharger les certificats client et serveur et indiquer à phpMyAdmin de les utiliser :

// Address of your instance
$cfg['Servers'][$i]['host'] = 'replace-me-cluster-name.cluster-replace-me-id.replace-me-region.rds.amazonaws.com';
// Use SSL for connection
$cfg['Servers'][$i]['ssl'] = true;
// You need to have the region CA file and the authority CA file (2019 edition CA for example) in the PEM bundle for it to work
$cfg['Servers'][$i]['ssl_ca'] = '../rds-combined-ca-bundle.pem';
// Enable SSL verification
$cfg['Servers'][$i]['ssl_verify'] = true;

Voir aussi

reCaptcha utilisant hCaptcha

$cfg['CaptchaApi'] = 'https://www.hcaptcha.com/1/api.js';
$cfg['CaptchaCsp'] = 'https://hcaptcha.com https://*.hcaptcha.com';
$cfg['CaptchaRequestParam'] = 'h-captcha';
$cfg['CaptchaResponseParam'] = 'h-captcha-response';
$cfg['CaptchaSiteVerifyURL'] = 'https://hcaptcha.com/siteverify';
// This is the secret key from hCaptcha dashboard
$cfg['CaptchaLoginPrivateKey'] = '0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// This is the site key from hCaptcha dashboard
$cfg['CaptchaLoginPublicKey'] = 'xxx-xxx-xxx-xxx-xxxx';

reCaptcha en utilisant Turnstile

$cfg['CaptchaMethod'] = 'checkbox';
$cfg['CaptchaApi'] = 'https://challenges.cloudflare.com/turnstile/v0/api.js';
$cfg['CaptchaCsp'] = 'https://challenges.cloudflare.com https://static.cloudflareinsights.com';
$cfg['CaptchaRequestParam'] = 'cf-turnstile';
$cfg['CaptchaResponseParam'] = 'cf-turnstile-response';
$cfg['CaptchaLoginPublicKey'] = '0xxxxxxxxxxxxxxxxxxxxxx';
$cfg['CaptchaLoginPrivateKey'] = '0x4AAAAAAAA_xx_xxxxxxxxxxxxxxxxxxxx';
$cfg['CaptchaSiteVerifyURL'] = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';

reCaptcha utilisant Google reCaptcha v2/v3

$cfg['CaptchaLoginPublicKey'] = 'xxxxxxxxxxxxxxxx-xxxxxxxxxxxx';
$cfg['CaptchaLoginPrivateKey'] = 'xxxxxxxxx-xxxxxxxxxxxxxx';
// Remove it if you dot not want the checkbox mode
$cfg['CaptchaMethod'] = 'checkbox';

Guide utilisateur

Configurer phpMyAdmin

Il y a plusieurs paramètres de configuration qui peuvent être utilisés pour personnaliser l’interface. Ces paramètres sont décrits dans Configuration. Il existe plusieurs niveaux de configuration.

Les paramètres globaux peuvent être configurés dans config.inc.php comme décrit dans Configuration. C’est la seule façon de configurer les connexions aux bases de données et d’autres paramètres système globaux.

En plus de ça, il y a des paramètres utilisateur qui peuvent être stockés de manière persistante dans Stockage de la configuration de phpMyAdmin, et possiblement configurés automatiquement par Zéro configuration. Si les Stockage de la configuration de phpMyAdmin ne sont pas configurées, les paramètres sont stockés temporairement en données de session étant valables seulement jusqu’à votre déconnexion.

La configuration utilisateur peut être enregistrée pour réutilisation ultérieure, soit en la téléchargeant en fichier soit dans le stockage local du navigateur. Ces deux options sont accessibles dans l’onglet Paramètres. Les paramètres en stockage local du navigateur seront automatiquement chargés lors de la connexion à phpMyAdmin.

Authentification à deux facteurs

Nouveau dans la version 4.8.0.

Depuis phpMyAdmin 4.8.0, il est possible de configurer l’authentification à deux facteurs pour s’identifier. Pour l’utiliser, il faut d’abord configurer les Stockage de la configuration de phpMyAdmin. Une fois fait, chaque utilisateur pourra activer le second facteur d’authentification dans les Paramètres.

Lorsque vous exécutez phpMyAdmin à partir du répertoire source Git, les dépendances doivent être installées manuellement ; la façon habituelle de le faire est avec la commande :

composer require pragmarx/google2fa-qrcode bacon/bacon-qr-code

Ou en utilisant un jeton de sécurité matériel avec FIDO U2F :

composer require code-lts/u2f-php-server

Application d’authentification (2FA)

L’utilisation d’une application pour s’authentifier est une approche assez commune basée sur HOTP et TOTP. L’idée est de transmettre une clé privée depuis phpMyAdmin vers l’application d’authentification, laquelle sera mesure de générer un code à usage unique basé sur cette clé. La façon la plus simple d’entrer la clé de l’application depuis phpMyAdmin est de scanner un code QR.

Il existe des dizaines d’applications disponibles sur mobile qui implémentent ces standards, les plus connues étant :

Clé de sécurité matérielle (FIDO U2F)

L’utilisation de jetons matériels est considérée plus sécurisée qu’une solution logicielle. phpMyAdmin prend en charge les jetons FIDO U2F.

Il existe plusieurs fabricants pour ces jetons, par exemple :

Authentification simple à deux facteurs

Cette authentification n’est inclue que pour test et démonstration seuls puisqu’elle ne fournit pas vraiment d’authentification à deux facteurs du fait qu’elle demande à l’utilisateur de confirmer son identification en cliquant sur le bouton.

Elle ne devrait pas être utilisé en production et est désactivé à moins que $cfg['DBG']['simple2fa'] ne soit défini.

Transformations

Note

Vous devez avoir configuré Stockage de la configuration de phpMyAdmin pour utiliser la fonctionnalité de transformations.

Introduction

Pour permettre les transformations, vous devez paramétrer la table column_info et les directives appropriées. Veuillez consulter la section Configuration sur la manière de faire.

phpMyAdmin propose deux types de transformations : les transformations d’affichage du navigateur, qui n’affectent que l’affichage des données lors de la navigation dans phpMyAdmin, et les transformations d’entrée, qui affectent une valeur avant son insertion dans phpMyAdmin. Vous pouvez appliquer différentes transformations au contenu de chaque colonne. Chaque transformation dispose d’options permettant de définir comment elle affectera les données stockées.

Imaginons que vous ayez une colonne nom_de_fichier qui contient un nom de fichier. Normalement, vous ne verriez dans phpMyAdmin que ce nom de fichier. En utilisant l’affichage des transformations, vous pouvez transformer ce nom de fichier en lien HTML, et ainsi cliquer sur la structure de phpMyAdmin sur le lien du champ et voir le fichier affiché dans une nouvelle fenêtre de navigateur. En utilisant les options de transformation, vous pouvez également spécifier des chaînes pour préfixer ou suffixer des chaînes ou d’autres formats pour lesquels vous voulez voir le résultat avec ces transformations.

Pour avoir un aperçu général de toutes les transformations disponibles et de leurs options, vous pouvez soit cliquer sur le lien « Modifier » pour une colonne existante, soit créer une nouvelle colonne à partir de la boîte de dialogue. Dans les deux cas, il y a un lien sur la page de structure de la colonne pour « Transformation d’affichage » et « Transformation de saisie » qui vous donnera plus d’informations sur chaque transformation disponible sur votre système.

Pour un tutoriel sur la façon d’utiliser efficacement les transformations, voir notre section Liens sur la page d’accueil officielle de phpMyAdmin.

Utilisation

Consultez la page de structure de table (atteindre la page en cliquant le lien “Structure” d’une table). Cliquez alors sur « Modifier » (ou l’icône Modifier) et vous verrez alors trois nouveaux champs à la fin de la ligne : “Media type”, “Transformation” et “Options de transformation”.

  • Le champ “Media type” est un champ déroulant. Sélectionnez le Media type qui correspond au contenu de la colonne. Veuillez noter que beaucoup des transformations sont inactives jusqu’à ce que Media type ne soit sélectionné.
  • Le champ “Browser display transformation” est un champ à liste déroulante. Vous pouvez choisir à partir d’une liste grandissant sans cesse de transformations prédéfinies. Voir ci-dessous pour des informations sur la manière de construire vos propres transformations. Il existe des transformations globales et des transformations liées aux types MIME. Les transformations globales peuvent être utilisées pour tous les types MIME. Elles prendront si nécessaire le type MIME en considération. Les transformations liées au type MIME n’opèrent habituellement que sur un certain type MIME. Il existe des transformations qui opèrent sur le type MIME principal (comme “image”), et qui prendront très vraisemblablement en compte le sous-type, et celles qui n’opèrent que sur un sous-type spécifique (comme “image/jpeg”). Vous pouvez utiliser les transformations sur les types MIME pour lesquels la fonction n’a pas été prévue. Il n’y a pas de vérification pour s’assurer que vous avez choisi la bonne transformation, aussi, assurez-vous du résultat du traitement.
  • Le champ « Options de transformation de l’affichage du navigateur » est un champ de texte libre. Il vous faut saisir ici des options spécifiques de fonction de transformation. Habituellement, les transformations peuvent opérer avec les options par défaut, mais c’est généralement une bonne idée de jeter un œil à la vue générale pour voir quelles options sont nécessaires. Comme pour les champs ENUM/SET, il vous faut séparer plusieurs options en utilisant le format “a”,”b”,”c”,… (NOTEZ L’ABSENCE D’ESPACES). La raison est que les options seront analysées en interne comme un tableau, la première valeur étant vue comme le premier élément du tableau, et ainsi de suite. Pour spécifier un jeu de caractères MIME, il vous est possible de le définir dans transformation_options. Il vous faut mettre cela en dehors des options prédéfinies d’une transformation mime spécifique, en tant que dernière valeur de l’ensemble. Utiliser le format « “; charset=XXX” ». En cas d’utilisation d’une transformation pour laquelle il est possible de spécifier deux options et pour y ajouter un jeu de caractères, saisir « “premier paramètre”,”second paramètre”,”charset=us-ascii” ». Il est toutefois possible d’utiliser les paramètres par défaut : « ””,””,”charset =us-ascii” ». Les options par défaut peuvent être configurées en utilisant $cfg['DefaultTransformations'].
  • La « Transformation de saisie » est un autre menu déroulant qui correspond exactement aux instructions ci-dessus pour la « Transformation d’affichage », sauf que ces transformations affectent les données avant leur insertion dans la base de données. Elles sont le plus souvent utilisées pour fournir un éditeur spécialisé (par exemple, en utilisant l’interface de l’éditeur SQL de phpMyAdmin) ou un sélecteur (comme pour le téléchargement d’une image). Il est également possible de manipuler les données, par exemple en convertissant une adresse IPv4 en binaire ou en l’analysant au moyen d’une expression régulière.
  • Enfin, la section « Options de transformation de saisie » est l’équivalent de la section « Options de transformation d’affichage » ci-dessus et c’est là que les paramètres facultatifs et obligatoires sont saisis.

Structure de fichier

All specific transformations for mimetypes are defined through class files in the directory src/Plugins/Transformations/. Each of them extends a certain transformation abstract class declared in src/Plugins/Transformations/Abs.

Ils sont stockés dans des fichiers pour faciliter la personnalisation et permettre l’ajout facile de transformations nouvelles ou personnalisées.

Parce que l’utilisateur ne peut pas mettre ses propres types mime, on garde l’assurance que les transformations fonctionneront toujours. Cela n’a pas de sens d’appliquer une transformation à un type mime, que la fonction de transformation ne sait pas manipuler.

There is a file called src/Plugins/Transformations.php that provides some basic functions which can be included by any other transform function.

La convention de nommage de fichier est [Mimetype]_[Subtype]_[Transformation Name].php, alors que la classe abstraite qui l’étend prend le nom [Transformation Name]TransformationsPlugin. Toutes les méthodes qui doivent être implémentées par un plugin de transformation sont :

  1. getMIMEType() et getMIMESubtype() dans la classe principale ;
  2. getName(), getInfo() et applyTransformation() dans la classe abstraite qui l’étend.

Les méthodes getMIMEType(), getMIMESubtype() et getName() renvoient le nom du type MIME, les sous-type MIME et la transformation respectivement. getInfo() renvoie la description de la transformation et les options éventuelles qu’il peut recevoir et applyTransformation() est la méthode qui effectue en fait le travail de transformation du plugin.

Please see the src/Plugins/Transformations/TEMPLATE and src/Plugins/Transformations/TEMPLATE_ABSTRACT files for adding your own transformation plug-in. You can also generate a new transformation plug-in (with or without the abstract transformation class), by using scripts/transformations_generator_plugin.sh or scripts/transformations_generator_main_class.sh.

La méthode applyTransformation() prend toujours 3 variables :

  1. $buffer - Contient le texte dans la colonne. C’est le texte à transformer.
  2. $options - Contient n’importe quelle option utilisateur vers une fonction transform en tableau.
  3. $meta - Contient un objet avec des informations sur la colonne. Les données sont acquises à partir de la sortie de la fonction mysql_fetch_field(). Cela signifie que toutes les propriétés d’objet décrites sur la page du manuel sont disponibles dans cette variable et peuvent être utilisées pour transformer une colonne selon les propriétés unsigned/zerofill/not_null/…. La variable $meta->mimetype contient le Media type d’origine de la colonne (i.e. “text/plain”, “image/jpeg” etc.)

Signets

Note

Vous devez avoir configuré Stockage de la configuration de phpMyAdmin pour utiliser la fonctionnalité de signets.

Stockage des signets

Chaque requête exécutée peut être marquée comme signet sur la page où les résultats sont affichés. Un bouton nommé Conserver cette requête SQL dans les signets est affiché en bas de la page. Dès qu’un signet est stocké, cette requête est liée à la base de données Il est maintenant possible d’avoir accès à une liste déroulante de signets sur chacune des pages sur lesquelles la boîte de requête apparaît pour cette base de données.

Variables dans les signets

A l’intérieur d’une requête, vous pouvez aussi ajouter des espaces réservés pour des variables. Ceci est effectué en insérant dans la requête un commentaire SQL entre /* et */. La chaîne spéciale [VARIABLE{variable-number}] est utilisée à l’intérieur des commentaires. Gardez à l’esprit que toute la requête, moins le commentaire, doit être valide, sans quoi vous ne pourrez pas la stocker comme un signet. Veuillez noter également que le texte “VARIABLE” est sensible à la casse.

Quand vous exécutez un signet, tout ce qui est saisi dans les boîtes de variables sur la page de requête remplacera la chaîne /*[VARIABLE{variable-number}]*/ dans votre requête stockée.

Rappelez-vous également que tout ce qui se trouve à l’intérieur de la chaîne /*[VARIABLE{variable-number}]*/ pour votre requête restera en l’état, mais sera débarrassé des caractères /**/. Donc vous pouvez utiliser :

/*, [VARIABLE1] AS myname */

qui sera reproduit en

, VARIABLE1 as myname

dans votre requête, où VARIABLE1 est la chaîne que vous avez saisie dans la boîte de saisie relative à la variable 1.

Un exemple plus complexe, disons que vous avez stocké cette requête :

SELECT Name, Address FROM addresses WHERE 1 /* AND Name LIKE '%[VARIABLE1]%' */

Si vous souhaitez saisir « phpMyAdmin » comme variable pour votre requête stockée, la requête complète sera :

SELECT Name, Address FROM addresses WHERE 1 AND Name LIKE '%phpMyAdmin%'

REMARQUEZ L’ABSENCE D’ESPACES à l’intérieur de la construction /**/. Tout espace inséré sera plus tard également inséré en tant qu’espace dans votre requête et peut conduire à des résultats inattendus, particulièrement en utilisant l’expansion de variable dans une expression « LIKE “” ».

Gestion des utilisateurs

La gestion des utilisateurs est le processus contrôlant les utilisateurs autorisés à se connecter au serveur MySQL et définissant les permissions d’accès sur chaque base de données. phpMyAdmin ne gère pas les utilisateurs : il passe le nom et le mot de passe utilisateur à MySQL, qui détermine alors si un utilisateur est autorisé à réaliser une action particulière. Dans phpMyAdmin, les administrateurs ont tous les droits pour créer, voir et éditer les privilèges ou supprimer les utilisateurs.

Dans phpMyAdmin, la gestion des utilisateurs est contrôlée par l’onglet Utilisateurs sur la page principale. Les utilisateurs peuvent être créés, modifiés et supprimés.

Création d’un nouvel utilisateur

Pour créer un nouvel utilisateur, cliquer sur le lien Ajouter un nouveau compte utilisateur en bas de la page Comptes utilisateurs (il faut être un « super utilisateur », par exemple « root »). Utiliser les boîtes de texte et les listes déroulantes pour configurer l’utilisateur selon les besoins. Il sera alors possible de choisir s’il faut créer une base de données pour cet utilisateur et accorder des privilèges globaux spécifiques. Une fois créé (en cliquant sur « Go »), les permissions de l’utilisateur pourront être définie pour une base de données spécifique (ne pas accorder pas de privilèges globaux dans ce cas). En général, les utilisateurs n’ont pas besoin de privilèges globaux (autre que USAGE), seulement des permissions sur leur base de données spécifique.

Modification d’un utilisateur existant

Pour modifier un utilisateur existant, cliquer sur l’icône représentant un crayon à droite de l’utilisateur dans la page Comptes utilisateurs. Il est possible de modifier ses privilèges globaux ou spécifiques à une base de données, modifier son mot de passe ou copier ses privilèges vers un nouvel utilisateur.

Suppression d’un utilisateur

Dans la page Comptes utilisateurs, cocher la case de l’utilisateur à supprimer, choisir ou non de supprimer les bases de données du même nom (s’il en existe) et cliquer sur « Go ».

Affectation de privilèges à un utilisateur pour une base de données spécifique

Les utilisateurs sont assignés à des bases de données en éditant l’enregistrement utilisateur (à partir du lien Comptes utilisateurs de la page d’accueil). Si un utilisateur est spécifiquement créé pour une table donnée, il faudra d’abord le créer (sans privilège global) puis revenir éditer cet utilisateur pour ajouter la table et les privilèges pour la table individuelle.

Menus et groupes utilisateurs configurables

En activant $cfg['Servers'][$i]['users'] et $cfg['Servers'][$i]['usergroups'] vous pouvez personnaliser ce que les utilisateurs verront dans l’interface de phpMyAdmin.

Avertissement

Cette fonctionnalité limite ce que peut voir un utilisateur, ils restent toujours capable d’utiliser toutes les fonctions. Ceci n’est donc pas considéré comme une limitation de sécurité. Pour cela, vous devez utiliser les privilèges de MySQL.

Avec cette fonctionnalité activée, l’interface de gestion Comptes utilisateurs s’agrémente d’un nouvel onglet pour la gestion des Groupes utilisateurs, où il est possible de définir ce que chaque groupe peut voir (consulter l’image ci-dessous) et affecter un utilisateur à un groupe. Les utilisateurs auront alors une interface simplifiée, ce qui peut s’avérer utile pour des utilisateurs inexpérimentés qui seraient noyés par toutes les fonctionnalités que phpMyAdmin propose.

_images/usergroups.png

Relations

phpMyAdmin permet des relations (similaires aux clés étrangères) en utilisant les méthodes natives de MySQL (InnoDB) quand c’est possible, sinon avec les fonctions spéciales de phpMyAdmin quand nécessaire. Il existe deux façons d’éditer ces relations, avec la Vue relationnelle et avec le Concepteur par glissé-déposé. Elles sont expliquées sur cette page.

Note

Il faut avoir configuré les Stockage de la configuration de phpMyAdmin pour utiliser les relations seules de phpMyAdmin.

Infos techniques

Actuellement le seul type de table MySQL prenant en charge les relations est InnoDB. Avec une table InnoDB, phpMyAdmin va créer de véritables relations InnoDB qui seront imposées par MySQL quelque soit l’application accédant à la base de données. Dans tous les autres cas de tables, phpMyAdmin imposera les relations de manière interne, ces relations ne s’appliquant pas aux autres applications.

Vue relationnelle

Pour que cela fonctionne, il faut d’abord correctement créer [[pmadb|pmadb]]. Une fois fait, sélectionner une page de « Structure » de table. Sous la définition de table, un lien nommé « Vue relationnelle » est affiché . En cliquant sur ce lien, la page affichée offrira la possibilité de créer un lien vers une autre table pour n’importe quel champ (la plupart). Seules les CLÉS PRIMAIRES y sont affichées, ce qui fait que si le champ relié n’est pas affiché, c’est que quelque chose ne va pas. Le menu déroulant en bas est le champ qui va être utilisé comme le nom pour un enregistrement.

Exemple de vue relationnelle
_images/pma-relations-relation-view-link.png _images/pma-relations-relation-link.png

Admettons qu’il y ait des catégories et des liens, et qu’une catégorie puisse contenir plusieurs liens. La structure de la table devrait ressembler à :

  • category.category_id (doit être unique)
  • category.name
  • link.link_id
  • link.category_id
  • link.uri.

Ouvrir la page de vue relationnelle (sous la structure de table) pour la table link et pour le champ category_id, en sélectionnant category.category_id comme enregistrement maître.

En suivant le lien de table, le champ category_id sera un hyperlien cliquable vers l’enregistrement de catégorie correct. Mais tout ce qui est affiché est seulement category_id, pas le nom de la catégorie.

_images/pma-relations-relation-name.png

Pour corriger cela, ouvrir la vue relationnelle de la table category et dans le menu déroulant en bas, sélectionner « nom ». En suivant de nouveau le lien de table et en passant la souris sur l’hyperlien category_id, la valeur de la catégorie reliée sera maintenant affichée contextuellement.

_images/pma-relations-links.png

Concepteur

La fonctionnalité Concepteur est une façon graphique de créer, éditer et afficher les relations de phpMyAdmin. Ces relations sont compatibles avec celles créées dans la vue relationnelle de phpMyAdmin.

Pour utiliser cette fonctionnalité, il faut que Stockage de la configuration de phpMyAdmin et $cfg['Servers'][$i]['table_coords'] soit correctement configurés.

Pour utiliser le Concepteur, sélectionner une page de structure de base de données et chercher l’onglet Concepteur.

Pour exporter la vue en PDF, il faut d’abord créer les pages PDF. Le Concepteur crée l’agencement, c’est à dire comment les pages devraient être affichées. Pour finalement exporter la vue, il faut la créer avec une page et sélectionner un agencement créé avec le Concepteur.

Tableaux

Nouveau dans la version 3.4.0.

Depuis phpMyAdmin version 3.4.0, il est possible de générer facilement des graphique à partir d’une requêtre SQL en cliquant sur le lien « Afficher un graphique » dans la zone des « Opérations sur les résultats de requête ».

_images/query_result_operations.png

Une fenêtre « Afficher un graphique » est affichée dans laquelle il est possible de personnaliser le graphique avec les options suivantes.

  • Type de graphique : permet de choisir le type de graphique parmi les graphiques en barres, en colonnes, en ligne, en courbe, en aires, en camembert et en série temporelle (seuls les graphiques applicables pour la sélection courante de séries sont affichés).
  • Axe des X : permet de choisir le champ pour l’axe principal.
  • Séries (axe des Y) : permet de choisir les séries pour le graphique. Plusieurs peuvent être choisies.
  • Titre : permet de spécifier un titre qui sera affiché au-dessus du graphique.
  • Libellés des axes X et Y : permet de spécifier les libellés des axes.
  • Rangée de début et un nombre de rangées : permet de générer des graphiques seulement pour le nombre de rangées spécifié de l’ensemble des résultats.
_images/chart.png

Implémentation des graphiques

Les graphiques de phpMyAdmin sont dessinés avec la bibliothèque jQuery jqPlot.

Exemple

Graphique en camembert

Les résultats de requête pour un simple graphique en camembert peuvent être générés avec :

SELECT 'Food' AS 'expense',
   1250 AS 'amount' UNION
SELECT 'Accommodation', 500 UNION
SELECT 'Travel', 720 UNION
SELECT 'Misc', 220

Le résultat de cette requête est :

dépense nombre
Aliment 1250
Hébergement 500
Déplacement 720
Divers 220

En choisissant les dépenses en axe des X et les montants en séries :

_images/pie_chart.png
Graphique en barres et colonnes

Les barres et les colonnes des graphiques peuvent être affichées en mode cumulé. Une case à cocher est afficher pour le sélectionner.

Les résultats de requêtes pour un simple graphique en barres ou en colonnes peuvent être générés avec :

SELECT
   'ACADEMY DINOSAUR' AS 'title',
   0.99 AS 'rental_rate',
   20.99 AS 'replacement_cost' UNION
SELECT 'ACE GOLDFINGER', 4.99, 12.99 UNION
SELECT 'ADAPTATION HOLES', 2.99, 18.99 UNION
SELECT 'AFFAIR PREJUDICE', 2.99, 26.99 UNION
SELECT 'AFRICAN EGG', 2.99, 22.99

Le résultat de cette requête est :

titre rental_rate replacement_cost
ACADÉMIE DINOSAURE 0,99 20,99
AS GOLDFINGER 4,99 12,99
TROUS D’ADAPTATION 2,99 18,99
PRÉJUDICE DE L’AFFAIRE 2,99 26,99
ŒUF AFRICAIN 2,99 22,99

Choix du titre comme axe des X et des rental_rate et replacement_cost comme séries :

_images/column_chart.png
Nuage de points

Les nuages de points sont utiles pour identifier le mouvement d’une ou plusieurs variable(s) comparée(s) à une autre variable.

En utilisant les mêmes données de la section graphiques en barres et colonnes et en choisissant replacement_cost en axe des X et rental_rate en série :

_images/scatter_chart.png
Ligne, courbe et séries temporelles

Ces graphiques peuvent être utilisés pour illustrer les tendances des données. Les graphique en courbes dessinent des lignes lissées tandis que les séries temporelles affichent l’axe des X en prenant en considération les distances entre les dates/temps.

Les résultats de requête pour une ligne simple, une courbe ou un série temporelle peuvent être générés avec :

SELECT
   DATE('2006-01-08') AS 'date',
   2056 AS 'revenue',
   1378 AS 'cost' UNION
SELECT DATE('2006-01-09'), 1898, 2301 UNION
SELECT DATE('2006-01-15'), 1560, 600 UNION
SELECT DATE('2006-01-17'), 3457, 1565

Le résultat de cette requête est :

date revenu coût
08-01-2016 2056 1378
09-01-2006 1898 2301
15-01-2006 1560 600
17-01-2006 3457 1565
_images/line_chart.png _images/spline_chart.png _images/timeline_chart.png

Importer et exporter

Importer

Pour importer des données, aller dans l’onglet « Import » de phpMyAdmin. Pour importer des données dans une base de données ou une table spécifique, ouvrir la base de données ou la table avant d’aller dans l’onglet « Import ».

En plus de l’onglet normal « Importer et exporter », il est aussi possible d’importer un fichier SQL directement en le glissant-déposant depuis le gestionnaire de fichiers locaux sur l’interface de phpMyAdmin dans le navigateur.

En cas de problèmes pour l’importation de gros fichiers, merci de consulter 1.16 Je ne peux pas transférer de gros fichiers d’exportation (problèmes de mémoire, HTTP ou de temporisation - timeout)..

Il est possible d’importer en utilisant les méthodes suivantes :

Téléversement à l’aide d’un formulaire

Peut être réalisé avec tous les formats de fichiers gérés, et aussi les fichiers .gz ou .bz2, par exemple, mydump.sql.gz .

Requêtes SQL à l’aide d’un formulaire

Peut être réalisé avec tout export SQL valide.

Utilisation d’un répertoire de téléversement

Vous pouvez indiquer un répertoire de téléversement sur votre serveur Web où phpMyAdmin est installé. Après avoir téléversé votre fichier dans ce répertoire, vous pouvez le sélectionner dans le dialogue d’import de phpMyAdmin, voir $cfg['UploadDir'].

phpMyAdmin peut importer différents formats couramment utilisés.

CSV

Le format de fichier de valeurs séparées par des virgules (CSV), souvent utilisés dans les tableurs et d’autres programmes pour les imports/exports.

Note

Lors de l’import de données dans une table à partir d’un fichier CSV où la table à un champ “auto_increment”, mettez la valeur “auto_increment” pour chaque enregistrement dans le champ CSV à “0” (zéro). Ceci permet au champ “auto_increment” de fonctionner correctement.

Il est maintenant possible d’importer un fichier CSV au niveau du serveur ou de la base de données. Au lieu d’avoir à créer une table pour y importer le fichier CSV, la structure la plus adaptée sera déterminée pour vous et les données y seront importées. Toutes les autres fonctionnalités, prérequis et limitations restent inchangés.

CSV en utilisant LOAD DATA

Similaire à CSV, mais utilisant l’analyseur interne de MySQL au lieu de celui de phpMyAdmin.

Fichier Shape d’ESRI

Les fichier shape d’ESRI est un format populaire de données vectorielles géospatiales utilisés dans les logiciels de système d’information géographique. Il est développé et régulé par ESRI sous forme d’une spécification (presque) libre pour l’inter-opérabilité de données entre les logiciels ESRI et les autres logiciels.

MediaWiki

Les fichiers MediaWiki, qui peuvent être exportés par phpMyAdmin (version 4.0 et suivantes), peuvent maintenant être importés. C’est le format utilisé par Wikipedia pour afficher les tables.

Open Document Spreadsheet (ODS)

Les classeurs OpenDocument contenant une ou plusieurs feuilles de tableurs peuvent maintenant être importés directement.

Pour importer un fichier ODS, les feuilles de tableur doivent être nommées d’une manière spécifique pour rendre l’import aussi simple que possible.

Nom de table

Pendant l’import, phpMyAdmin utilise le nom de la feuille comme nom de table. Vous devez renommer les feuilles dans votre classeur pour que leurs noms correspondent à ceux des tables existantes (ou de la table que vous voulez créer, bien que ce soit moins problématique puisque vous pouvez rapidement renommer la table dans l’onglet Opération).

Noms de colonnes

La première ligne de votre feuille de tableur doit contenir le com des colonnes (ceci peut être accompli en insérant une nouvelle ligne en haut de votre feuille). Sur l’écran d’import, cochez la case « La première ligne du fichier contient le nom des colonnes de la table ». De cette façon, les données seront importées dans les bonnes colonnes.

Note

Les formules et calculs ne seront PAS évalués, seules les dernières valeurs enregistrées seront chargées. Assurez-vous que toutes les valeurs soient dans l’état désiré avant l’import.

SQL

SQL peut être utilisé pour manipuler les données. Il est aussi utile pour restaurer des données.

XML

Les fichiers XML exportés par phpMyAdmin (version 3.3.0 et suivantes) peuvent désormais être importés. Les structures (bases de données, tables, vues, déclencheurs, etc.) et/ou les données seront créées en fonction du contenu du fichier.

Les schémas XML gérés ne sont pas encore documentés dans ce wiki.

Exporter

phpMyAdmin peut faire des exports sous forme de fichiers texte (même compressés) sur votre disque local (ou dans le dossier $cfg['SaveDir'] de votre serveur Web) dans divers formats :

CodeGen

Format NHibernate. Versions prévues : Java, Hibernate, PHP PDO, JSON, etc. Donc le nom préliminaire est codegen.

CSV

Le format de fichier de valeurs séparées par des virgules (CSV), souvent utilisés dans les tableurs et d’autres programmes pour les imports/exports.

CSV pour Microsoft Excel

C’est une version pré-configurée d’un export CSV qui peut être importée dans la plupart des versions anglaises de Microsoft Excel. Certaines versions localisées (comme le danois) nécessitent « ; » au lieu de « , » comme séparateur de champ.

Microsoft Word 2000

Si vous utilisez Microsoft Word 2000 ou les versions suivantes (ou compatibles comme OpenOffice.org), vous pouvez utiliser cet export.

JSON

JSON (JavaScript Object Notation) est un format d’échange de données léger. Il est facile à lire et écrire pour les humains et facile à analyser et générer pour les machines.

Modifié dans la version 4.7.0: La structure JSON générée a été changée dans phpMyAdmin 4.7.0 pour produire des données JSON valides.

Le JSON généré est une liste d’objets avec les attributs suivants :

type

Le type d’un objet donné peut être :

header
En-tête d’export contenant un commentaire et la version de phpMyAdmin.
database
Marqueur de début de base de données, contenant le nom de la base de données.
table
Export de données de tables.
version

Utilisé dans header type et indique la version de phpMyAdmin.

comment

Commentaire textuel facultatif.

name

Nom d’objet - table ou base de données basé sur type.

database

Nom de base de données pour table type.

data

Contenu de table pour table type.

Exemple de sortie :

[
    {
        "comment": "Export to JSON plugin for PHPMyAdmin",
        "type": "header",
        "version": "4.7.0-dev"
    },
    {
        "name": "cars",
        "type": "database"
    },
    {
        "data": [
            {
                "car_id": "1",
                "description": "Green Chrysler 300",
                "make_id": "5",
                "mileage": "113688",
                "price": "13545.00",
                "transmission": "automatic",
                "yearmade": "2007"
            }
        ],
        "database": "cars",
        "name": "cars",
        "type": "table"
    },
    {
        "data": [
            {
                "make": "Chrysler",
                "make_id": "5"
            }
        ],
        "database": "cars",
        "name": "makes",
        "type": "table"
    }
]
LaTeX

Si vous voulez intégrer des données de table ou de structure en LaTeX, c’est un bon choix.

LaTeX est un système de composition adapté pour les productions de documents scientifiques et mathématiques de qualité. Il est aussi adapté pour la production de toutes sortes de documents, de la simple lettre à des livres complets. LaTeX utilise TeX comme moteur de formatage. Vous pouvez en apprendre plus sur TeX et LaTeX sur the Comprehensive TeX Archive Network et short description of TeX.

La sortie doit être intégrée dans un document LaTeX avant d’être rendue, par exemple dans le document suivant :

\documentclass{article}
\title{phpMyAdmin SQL output}
\author{}
\usepackage{longtable,lscape}
\date{}
\setlength{\parindent}{0pt}
\usepackage[left=2cm,top=2cm,right=2cm,nohead,nofoot]{geometry}
\pdfpagewidth 210mm
\pdfpageheight 297mm
\begin{document}
\maketitle

% insert phpMyAdmin LaTeX Dump here

\end{document}
MediaWiki

Les tables et les données doivent être exportées dans le format MediaWiki, qui est utilisé par Wikipedia pour afficher les tables. Il peut exporter les structures, les données ou les deux, y compris les en-têtes et les noms de tables.

Feuilles de tableur OpenDocument

Standard ouvert pour les données de calculs qui a largement été adopté. Les plus récentes suite de bureau (comme LibreOffice, OpenOffice, Microsoft Office ou Google Docs) peuvent prendre en charge ce format.

Texte OpenDocument

Nouveau standard pour les données texte qui a largement été adopté. Les plus récents traitements de texte (comme LibreOffice, OpenOffice, Microsoft Word, AbiWord ou KWord) peuvent le prendre en charge.

PDF

Pour des raisons de présentation, des PDF non éditables pourraient être le meilleur choix pour vous.

Tableau PHP

Vous pouvez générer un fichier PHP déclarant un tableau multi-dimensionnel avec le contenant de la table ou de la base de données sélectionnée.

SQL

Les export SQL peuvent être utilisés pour restaurer votre base de données, et donc est utile pour les sauvegardes.

L’option « Taille maximum de la requête générée » semble ne pas être documentée. Mais l’expérience a montré qu’il découpait de gros INSERTS en plusieurs dont la taille ne dépasse pas le nombre d’octets donnés (ou caractères ?). Par conséquent, lors de l’import du fichiers, pour de grosses tables, vous éviterez d’avoir l’erreur : « Got a packet bigger than “max_allowed_packet” bytes ».

Options de données

Insertions complètes ajoute le nom des colonnes dans le fichiers d’export SQL. Ce paramètre améliore la lisibilité et la robustesse du fichier d’export. Ajouter le nom de la colonne augmente la taille du fichier, mais en combinaisons avec les « Insertions étendues », c’est négligeable.

Insertions étendues combine plus lignes de données dans une seule requête INSERT. Ceci réduit significativement la taille des fichiers d’export SQL, accélère l’importation et est généralement recommandé.

Texy!

Format de balisage Texy!. Vous pouvez voir un exemple sur Texy! demo.

XML

Export facilement analysable à utiliser avec des scripts personnalisés.

Modifié dans la version 3.3.0: Le schéma XML utilisé a été changé à partir de la version 3.3.0

YAML

YAML est un format de sérialisation de données facilement lisible pour un humain et très puissante en termes de traitement ( <https://yaml.org> ).

Thèmes personnalisés

phpMyAdmin peut gérer les thèmes de tiers. Vous pouvez télécharger des thèmes supplémentaires sur notre site Web <https://www.phpmyadmin.net/themes/>.

Configuration

Themes are configured with $cfg['ThemeManager'] and $cfg['ThemeDefault']. Under ./public/themes/, you should not delete the directory pmahomme or its underlying structure, because this is the system theme used by phpMyAdmin. pmahomme contains all images and styles, for backwards compatibility and for all themes that would not include images or css-files. If $cfg['ThemeManager'] is enabled, you can select your favorite theme on the main page. Your selected theme will be stored in a cookie.

Création d’un thème personnalisé

Pour créer un thème :

  • créez un nouveau sous-répertoire (par exemple « votre_nom_de_theme ») dans ./public/themes/.
  • copiez les fichiers et les répertoires de pmahomme vers « votre_nom_de_theme »
  • éditez vos fichiers css dans « votre_nom_de_theme/css »
  • mettez vos nouvelles images dans « votre_nom_de_theme/img »
  • éditez _variables.scss dans « votre_nom_de_theme/scss »
  • éditez theme.json dans « votre_nom_de_theme » pour qu’il contienne les méta-données du thème (voir ci-dessous)
  • faites un nouveau cliché de votre thème et enregistrez-le sous « votre_nom_de_theme/screen.png »
Méta-données de thème

Modifié dans la version 4.8.0: Avant la version 4.8.0, les méta-données de thème étaient passées dans le fichier info.inc.php. Ceci a été remplacé par le fichier file:theme.json pour permettre une analyse plus facile (sans avoir besoin de faire du code PHP) et pour gérer des fonctionnalités supplémentaires.

Dans le répertoire des thèmes se trouve le fichier theme.json qui contient les méta-données de thème. Il se compose actuellement ainsi :

name

Afficher le nom du thème.

Ce champ est obligatoire.

version

Le numéro de version du thème, qui peut être arbitraire et qui n’a pas besoin de correspondre au numéro de version de phpMyAdmin.

Ce champ est obligatoire.

description

Description du thème. Ceci sera affiché sur le site Web.

Ce champ est obligatoire.

author

Nom de l’auteur du thème.

Ce champ est obligatoire.

url

Lien vers le site Web de l’auteur du thème. C’est une bonne idée pour indiquer comment obtenir de l’assistance.

supports

Tableau des versions majeures de phpMyAdmin gérées.

Ce champ est obligatoire.

Exemple : définition du thème Original livré avec phpMyAdmin 4.8 :

{
    "name": "Original",
    "version": "4.8",
    "description": "Original phpMyAdmin theme",
    "author": "phpMyAdmin developers",
    "url": "https://www.phpmyadmin.net/",
    "supports": ["4.8"]
}
Partage d’images

Si vous ne voulez pas utiliser vos propres symboles et boutons, supprimez le répertoire « img » dans « votre_nom_de_theme ». phpMyAdmin utilisera les icônes et boutons par défaut (du thème système pmahomme).

Autres sources d’informations

Livre imprimé

Le guide d’utilisation de phpMyAdmin est le livre « Mastering phpMyAdmin for Effective MySQL Management » par MArc Delisle. Vous pouvez obtenir des informations sur ce livre et d’autres livres officiels sur la page livres du site phpMyAdmin.

Tutoriels

Articles et tutoriels de tiers que vous pourriez trouver intéressants :

Česky (Tchèque)
Русский (Russe)

FAQ - Foire Aux Questions

Veuillez jeter un œil à notre section Liens sur la page d’accueil officielle de phpMyAdmin pour une revue détaillée des fonctionnalités de phpMyAdmin et/ou de son interface.

Serveur

1.1 Mon serveur plante chaque fois qu’une action spécifique est requise ou phpMyAdmin renvoie une page vide ou remplie de caractères cryptiques, que puis-je faire ?

Essayez de paramétrer la directive $cfg['OBGzip'] à false dans votre fichier config.inc.php et la directive zlib.output_compression à Off dans votre fichier de configuration php.

1.2 Mon serveur Apache plante en utilisant phpMyAdmin.

Vous devriez d’abord essayer les dernières versions d’Apache, et si possible de MySQL. Si votre serveur continue à planter, veuillez demander de l’aide dans les divers groupes d’entraide de Apache.

1.3 (retiré).

1.4 J’utilise phpMyAdmin avec IIS, et j’obtiens le message d’erreur : « L’application CGI spécifiée a mal fonctionné en ne renvoyant pas de jeu complet d’en-têtes HTTP… ».

Vous avez juste oublié de lire le fichier install.txt de la distribution PHP. Consultez le dernier message dans ce rapport de bogue de la base de données officielle de bogues de PHP.

1.5 J’utilise phpMyAdmin avec IIS, et je suis confronté à des plantages et/ou beaucoup de messages d’erreur avec l’authentification HTTP.

Ceci est un problème connu du filtre ISAPI de PHP : il n’est pas très stable. Veuillez utiliser plutôt le mode d’authentification par cookie.

1.6 Je ne peux pas utiliser phpMyAdmin avec PWS : rien ne s’affiche !

This seems to be a PWS bug. Filippo Simoncini found a workaround (at this time there is no better fix): remove or comment the DOCTYPE declarations (2 lines) from the scripts src/Header.php and index.php.

1.7 Comment puis-je compresser avec gzip un fichier d’exportation ou un export CSV ? Il semble que cela ne fonctionne pas.

Cette fonctionnalité est basée sur les fonctions PHP gzencode() pour être plus indépendantes de la plateforme (Unix/Windows, Mode sécurisé ou non, et ainsi de suite). Aussi, vous devez avoir le support de Zlib (--with-zlib).

1.8 Je ne peux pas insérer un fichier texte dans une table, et j’obtiens une erreur concernant le mode sécurisé qui est utilisé.

Votre fichier téléversé est enregistré par PHP dans le répertoire de téléversement, tel que défini dans le fichier php.ini par la variable upload_tmp_dir (habituellement, le répertoire système par défaut est /tmp). Nous vous recommandons le paramétrage suivant pour les serveurs Apache exécutés en mode sécurisé, pour activer les transferts de fichiers tout en étant raisonnablement sécurisés :

  • créer un répertoire séparé pour les transferts : mkdir /tmp/php
  • rendez propriétaire du répertoire le groupe et l’utilisateur du serveur Apache : chown apache.apache /tmp/php
  • donnez les permissions appropriées : chmod 600 /tmp/php
  • mettez upload_tmp_dir = /tmp/php dans le fichier php.ini
  • redémarrez Apache

1.9 (retiré).

1.10 J’ai des problèmes en transférant des fichiers avec phpMyAdmin exécuté sur un serveur sécurisé. Mon navigateur est Internet Explorer et j’utilise un serveur Apache.

Comme l’a suggéré « Rob M » dans le forum phpWizard, ajoutez cette ligne dans votre fichier httpd.conf :

SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

Il semble que cela supprime beaucoup de problèmes entre Internet Explorer et SSL.

1.11 J’obtiens “open_basedir restriction” en téléchargeant un fichier depuis l’onglet d’import.

Depuis la version 2.2.4, phpMyAdmin gère les serveurs avec les restrictions open_basedir. Cependant, vous devez créer un répertoire temporaire et le configurer comme $cfg['TempDir']. Les fichiers transmis seront déplacés ici, et après l’exécution de vos commandes SQL, ils seront supprimés.

1.12 J’ai perdu le mot de passe de super-utilisateur de MySQL, que puis-je faire ?

phpMyAdmin s’authentifie auprès du serveur MySQL utilisé, donc pour retrouver un mot de passe phpMyAdmin il faut le récupérer au niveau de MySQL.

Le manuel MySQL explique comment réinitialiser les permissions.

Si le serveur MySQL est installé chez un fournisseur d’hébergement, merci de le contacter pour récupérer le mot de passe.

1.13 (retiré).

1.14 (retiré).

1.15 J’ai des problèmes avec les noms de colonnes mysql.user.

Dans les précédentes versions de MySQL, les colonnes User et Password étaient nommés user et password. Veuillez modifier vos noms de colonnes pour qu’ils s’adaptent aux standards en vigueur.

1.16 Je ne peux pas transférer de gros fichiers d’exportation (problèmes de mémoire, HTTP ou de temporisation - timeout).

À partir de la version 2.7.0, le moteur d’importation a été ré-écrit et ces problèmes ne devraient plus arriver. Si possible, mettez à jour votre phpMyAdmin avec la dernière version pour tirer parti des nouvelles fonctionnalités d’importation.

Les premières choses à vérifier (ou à demander à votre hébergeur de vérifier) sont les valeurs de max_execution_time, upload_max_filesize, memory_limit et post_max_size dans le fichier de configuration php.ini. Tous ces paramètres limitent la taille maximale des données qui peuvent être soumises et gérées par PHP. Veuillez noter que la taille post_max_size doit être plus grande que upload_max_filesize. Il existe plusieurs contournements si votre téléchargement est trop gros ou si votre hébergeur ne souhaite pas modifier les paramètres :

  • Regardez la fonctionnalité $cfg['UploadDir']. Ceci permet d’uploader un fichier vers un serveur via scp, FTP ou votre méthode de transfert de fichier préférée. PhpMyAdmin est alors capable d’importer les fichiers à partir du répertoire temporaire. Plus d’informations sont disponibles dans la section Configuration.

  • En utilisant un utilitaire (tel que BigDump) pour découper le fichier avant de le téléverser. Nous ne gérons pas ceci ni aucune application tierce, mais nous savons que des utilisateurs ont réussi à le faire.

  • Si vous avez un accès au shell (ligne de commande), utilisez MySQL pour importer les fichiers directement. Vous pouvez faire ceci en utilisant la commande « source » dans MySQL :

    source filename.sql;
    

1.17 Quelles versions de bases de données sont gérées par phpMyAdmin ?

Pour MySQL, les versions 5.5 et plus récentes sont supportées. Quant aux plus anciennes version de MySQL, notre page Downloads propose de plus anciennes versions de phpMyAdmin (qui pourraient ne plus être supportées).

Pour MariaDB, les versions 5.5 et plus récentes sont supportées.

1.17a Je ne peux pas me connecter au serveur MySQL. Il renvoie toujours le message d’erreur, « Le client ne gère pas le protocole d’authentification requis par le serveur ; envisagez de mettre à jour votre client MySQL »

Vous avez essayé d’accéder à MySQL avec une ancienne bibliothèque client de MySQL. Cette version de bibliothèque client peut être vérifiée dans le résultat de phpinfo(). En général, elle doit avoir au moins le même numéro de version mineure que votre serveur, comme indiqué dans 1.17 Quelles versions de bases de données sont gérées par phpMyAdmin ?. Ce problème est généralement observé en utilisant MySQL version 4.1 ou ultérieure. MySQL a changé l’empreinte numérique (« hash ») d’authentification et PHP essaie d’utiliser l’ancienne méthode. La solution adéquate est d’utiliser l”extension mysqli avec la bonne bibliothèque client pour correspondre à cette installation de MySQL. Il y a plus d’informations (et de moyens de contournement) dans la documentation MySQL.

1.18 (retiré).

1.19 Je ne peux pas utiliser la fonctionnalité « Afficher les relations » parce que le script semble ne pas connaître la police que j’utilise !

La bibliothèque TCPDF que nous utilisons pour cette fonctionnalité nécessite des fichiers spéciaux pour utiliser les polices. Veuillez vous référez au manuel TCPDF pour créer ces fichiers.

1.20 Je reçois une erreur sur l’absence des extensions mysqli et mysql.

Pour se connecter à un serveur MySQL, PHP a besoin d’un jeu de fonctions MySQL appelées « extension MySQL ». Cette extension peut faire partie de la distribution PHP (intégrée), sinon elle doit être chargée dynamiquement. Son nom est vraisemblablement mysqli.so ou php_mysqli.dll. phpMyAdmin a essayé de charger l’extension mais a échoué. Habituellement, le problème est résolu en installant un paquet nommé « PHP-MySQL » ou similaire.

Il y avait deux interfaces PHP pour MySQL - mysql et mysqli. L’interface mysql a été retirée dans PHP 7.0.

Ce problème peut être causé par l’utilisation de mauvais chemin dans le fichier php.ini ou l’utilisation du mauvais fichier php.ini.

Assurez-vous que les fichiers d’extension existent dans le répertoire indiqué par extension_dir et que les lignes correspondantes dans votre fichier php.ini ne soient pas commentées (vous pouvez utiliser phpinfo() pour vérifier votre configuration) :

[PHP]

; Directory in which the loadable extensions (modules) reside.
extension_dir = "C:/Apache2/modules/php/ext"

Le fichier :php.ini peut être chargé de plusieurs emplacements (particulièrement sous Windows), aussi, veuillez vérifier que vous mettez à jour le bon. Avec Apache, vous pouvez indiquer un chemin spécifique pour ce fichier en utilisant la directive PHPIniDir :

LoadModule php7_module "C:/php7/php7apache2_4.dll"
<IfModule php7_module>
    PHPIniDir "C:/php7"
    <Location>
       AddType text/html .php
       AddHandler application/x-httpd-php .php
    </Location>
</IfModule>

Dans quelques rares cas, ce problème peut être causé par d’autres extensions chargées dans PHP qui empêchent les extensions MySQL d’être chargées. Si tout le reste a échoué, vous pouvez essayer de commenter les extensions des autres bases de données dans le fichier php.ini.

1.22 Je ne vois pas le champ « Emplacement du fichier texte », aussi je ne peux pas transférer.

Ceci est dû très probablement au fait que dans votre fichier php.ini, votre paramètre file_uploads n’est pas défini à « on ».

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 !

Ceci arrive parce que la directive MySQL lower_case_table_names est définie par défaut à 1 (ON) dans la version Win32 de MySQL. Vous pouvez changer ce comportement en changeant simplement la directive à 0 (OFF) : il suffit de modifier votre fichier my.ini qui devrait se situer dans votre répertoire Windows directory et ajouter la ligne suivante au groupe [mysqld] :

set-variable = lower_case_table_names=0

Note

Forcer cette variable à 0 avec –lower-case-table-names=0 sur un système de fichier insensible à la casse et accéder à des tables MyISAM utilisant des casses différentes peut provoquer des corruptions d’index.

Ensuite, sauvegardez le fichier et redémarrez le service MySQL. Vous pouvez toujours vérifier la valeur de cette directive en utilisant la requête suivante

SHOW VARIABLES LIKE 'lower_case_table_names';

1.24 (retiré).

1.25 J’utilise Apache avec mod_gzip-1.3.26.1a sur Windows XP, et j’ai des problèmes, comme par exemple, des variables non définies quand j’exécute une requête SQL.

Une astuce de Jose Fandos : mettez en commentaire les deux lignes suivantes dans votre fichier httpd.conf, comme ceci :

# mod_gzip_item_include file \.php$
# mod_gzip_item_include mime "application/x-httpd-php.*"

car cette version de mod_gzip sur Apache (Windows) a des problèmes pour manipuler les scripts PHP. Bien sûr, vous devrez redémarrer Apache.

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.

C’est un problème de permission. Faites un clic droit sur le dossier phpmyadmin et sélectionner Propriétés. Dans l’onglet Sécurité, cliquez sur « Ajouter » et sélectionner l’utilisateur « IUSR_machine » à partir de la liste. Définissez maintenant ses permissions et cela devrait fonctionner.

1.27 J’obtiens une page vide lorsque je veux voir une très grosse page (par exemple, db_structure.php avec beaucoup de tables).

C’est un bogue PHP qui survient quand le cache de résultats GZIP (output buffering) est activé. Si vous le désactivez (en définissant $cfg['OBGzip'] dans config.inc.php), cela devrait fonctionner. Ce bogue sera corrigé dans PHP version 5.0.0.

1.28 Mon serveur MySQL refuse quelquefois des requêtes et renvoie le message “Errorcode: 13”. Qu’est-ce que cela signifie ?

Cela peut arriver à cause d’un bogue de MySQL quand vous avez des noms de base de données/tables avec des caractères en majuscules bien que lower_case_table_names soit défini à 1. Pour corriger ceci, désactivez cette directive, convertissez tous les noms de vos tables et base de données en minuscules et réactivez-la. Il y a également un correctif disponible à partir de MySQL 3.23.56 / 4.0.11-gamma.

1.29 Quand je crée une table ou que je modifie une colonne, j’obtiens une erreur et les colonnes sont dupliquées.

Il est possible de configurer Apache de telle façon que PHP a des problèmes en interprétant les fichiers .php.

Les problèmes surviennent quand deux jeux de directives différents (et en conflit) sont utilisés :

SetOutputFilter PHP
SetInputFilter PHP

et

AddType application/x-httpd-php .php

Dans le cas que nous avons constaté, un jeu de directives était dans le fichier /etc/httpd/conf/httpd.conf, alors que l’autre était dans le fichier /etc/httpd/conf/addon-modules/php.conf. La méthode recommandée est avec AddType, aussi, il faut juste commenter les premières lignes et redémarrer Apache :

#SetOutputFilter PHP
#SetInputFilter PHP

1.30 J’obtiens l’erreur « left.php: Missing hash ».

Ce problème est connu pour survenir quand le serveur exécute Turck MMCache, mais la mise à jour de MMCache en version 2.3.21 résoud le problème.

1.31 Quelles versions de PHP sont prises en charge par phpMyAdmin ?

Depuis la version 4.5, phpMyAdmin gère seulement PHP 5.5 et ses versions plus récentes. Depuis la version 4.1, phpMyAdmin gère seulement PHP 5.3 et ses versions plus récentes. Pour les versions 4.0.x vous pouvez utiliser PHP 5.2.

PHP7 est pris en charge depuis phpMyAdmin 4.6, PHP 7.1 depuis la version 4.6.5, PHP 7.2 depuis la version 4.7.4.

HHVM est géré depuis phpMyAdmin 4.8.

Depuis la version 5.0, phpMyAdmin ne prend en charge que PHP 7.1 et plus récent. Depuis la version 5.2, phpMyAdmin ne prend en charge que PHP 7.2 et plus récent. Depuis la version 6.0, phpMyAdmin ne prend en charge que PHP 8.1 et plus récent.

1.35 Puis-je utiliser l’authentification HTTP avec Apache CGI ?

Oui. Cette procédure a été testée avec phpMyAdmin 2.6.1, PHP 4.3.9 en mode ISAPI sous IIS 5.1.

  1. Dans votre fichier php.ini, paramétrez cgi.rfc2616_headers = 0
  2. Dans la boîte de dialogue Propriétés de site -> Sécurité de fichier/répertoire -> Accès anonyme, cochez la case Accès anonyme et décochez toutes les autres cases (c-à-d. décochez Authentification de base, Authentification intégrée Windows, et Digest si ces cases sont cochées). Cliquez sur OK.
  3. Dans Erreurs personnalisées, sélectionnez de 401;1 à 401;5 et cliquez sur le bouton Définir par défaut.

Voir aussi

RFC 2616

1.33 (retiré).

1.34 Puis-je accéder directement aux pages des bases de données ou des tables ?

Oui. Prêt à l’emploi, vous pouvez utiliser une URL comme http://server/phpMyAdmin/index.php?server=X&db=database&table=table&target=script. Pour server, vous pouvez utiliser le numéro de serveur qui se réfère à l’index numérique de l’hôte (de $i) dans config.inc.php. Les parties table et script sont optionnelles.

Si vous voulez une URL de type http://server/phpMyAdmin/database[/table][/script], vous devez faire quelques configurations additionnelles. Les lignes suivantes s’appliquent uniquement pour le serveur Web Apache. D’abord, assurez-vous que vous avez activé certaines fonctionnalités dans la configuration globale d’Apache. Vous avez besoin que Options SymLinksIfOwnerMatch et AllowOverride FileInfo soient activées pour le répertoire où est installé phpMyAdmin et que mod_rewrite soit activé. Ensuite, vous avez seulement besoin de créer le fichier suivant .htaccess dans le dossier racine de l’installation de phpMyAdmin (n’oubliez pas de changer le nom du répertoire) :

RewriteEngine On
RewriteBase /path_to_phpMyAdmin
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&table=$2&target=$3 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&target=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ index.php?db=$1&table=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)$ index.php?db=$1 [R]

Modifié dans la version 5.1.0: La prise en charge du paramètre target a été supprimée dans phpMyAdmin 5.1.0. Utilisez plutôt le paramètre route.

1.35 Puis-je utiliser l’authentification HTTP avec Apache CGI ?

Oui. Cependant vous aurez besoin de passer la variable d’authentification à CGI en utilisant la règle rewrite suivante :

RewriteEngine On
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

1.36 J’obtiens une erreur « 500 Internal Server Error ».

Il peut y avoir plusieurs explications à cela et consulter le journal des erreurs de votre serveur devrait vous donner une piste.

1.38 Puis-je utiliser phpMyAdmin sur un serveur sur lequel Suhosin est activé ?

Oui, mais les valeurs de configuration par défaut de Suhosin sont connues pour provoquer des problèmes avec certaines opérations, comme par exemple, l’édition d’une table avec beaucoup de colonnes sans primary key ou sans primary key textuelles.

La configuration de Suhosin pourrait mener à un dysfonctionnement dans certains cas et ne peut être totalement évité car phpMyAdmin est une application qui a besoin de transférer de gros volumes de colonnes dans une unique requête HHTP, ce qu’essaie parfois Suhosin d’empêcher. Généralement, toutes les directives suhosin.request.*, suhosin.post.* et suhosin.get.* peuvent avoir un effet négatif sur l’utilisabilité de phpMyAdmin. Vous pouvez toujours trouver dans le fichier journal des erreurs la limite qui a causé la suppression de la variable, et vous pouvez ainsi diagnostiquer le problème et ajuster la variable de configuration.

Les valeurs par défaut pour la plupart des options de configuration de Suhosin fonctionneront pour la plupart des scénarios, cependant, vous pourriez vouloir ajuster au moins les paramètres suivants :

Pour une sécurité améliorée, nous recommandons aussi ces modifications :

Vous pouvez aussi désactiver les avertissements en utilisant la directive $cfg['SuhosinDisableWarning'].

1.39 Quand j’essaie de me connecter en https, je peux me connecter, mais ma connexion est redirigée en http. Qu’est-ce qui peut causer ce comportement ?

Ceci est causé par le fait que les script PHP ne savent pas que le site utilise https. En fonction du serveur Web utilisé, vous devez le configurer pour indiquer à PHP l’URL à utiliser pour y accéder.

Par exemple, pour Apache, assurez-vous d’avoir activé SSLOptions et StdEnvVars dans votre configuration.

1.41 Quand je vois une base de données et que je demande à voir ses privilèges, j’obtiens une erreur à propos d’une colonne inconnue.

Les tables de privilèges du serveur MySQL ne sont pas à jour, vous devez exécuter la commande mysql_upgrade sur le serveur.

1.42 Comment empêcher les robots d’accéder à phpMyAdmin ?

Vous pouvez ajouter diverses règles dans .htaccess pour filtrer les accès en se basant sur le champ user agent. Ces règles sont facilement contournables, mais cela peut empêcher au moins quelques robots d’accéder à votre installation.

RewriteEngine on

# Allow only GET and POST verbs
RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR]

# Ban Typical Vulnerability Scanners and others
# Kick out Script Kiddies
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|wkito|pikto|scan|acunetix).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]

# Ban Search Engines, Crawlers to your administrative panel
# No reasons to access from bots
# Ultimately Better than the useless robots.txt
# Did google respect robots.txt?
# Try google: intitle:phpMyAdmin intext:"Welcome to phpMyAdmin *.*.*" intext:"Log in" -wiki -forum -forums -questions intext:"Cookies must be enabled"
RewriteCond %{HTTP_USER_AGENT} ^.*(AdsBot-Google|ia_archiver|Scooter|Ask.Jeeves|Baiduspider|Exabot|FAST.Enterprise.Crawler|FAST-WebCrawler|www\.neomo\.de|Gigabot|Mediapartners-Google|Google.Desktop|Feedfetcher-Google|Googlebot|heise-IT-Markt-Crawler|heritrix|ibm.com\cs/crawler|ICCrawler|ichiro|MJ12bot|MetagerBot|msnbot-NewsBlogs|msnbot|msnbot-media|NG-Search|lucene.apache.org|NutchCVS|OmniExplorer_Bot|online.link.validator|psbot0|Seekbot|Sensis.Web.Crawler|SEO.search.Crawler|Seoma.\[SEO.Crawler\]|SEOsearch|Snappy|www.urltrends.com|www.tkl.iis.u-tokyo.ac.jp/~crawler|SynooBot|crawleradmin.t-info@telekom.de|TurnitinBot|voyager|W3.SiteSearch.Crawler|W3C-checklink|W3C_Validator|www.WISEnutbot.com|yacybot|Yahoo-MMCrawler|Yahoo\!.DE.Slurp|Yahoo\!.Slurp|YahooSeeker).* [NC]
RewriteRule .* - [F]

1.43 Pourquoi ne puis-je pas afficher la structure de ma table contenant des centaines de colonnes ?

Car votre paramètre PHP memory_limit est trop faible ; ajustez-le dans php.ini.

1.44 Comment réduire la taille de la version installée de phpMyAdmin sur disque ?

Certains utilisateurs ont demandé la possibilité de réduire la taille d’une installation de phpMyAdmin. Ceci n’est pas recommandé et peut conduire à une confusion quant aux fonctionnalités manquantes, mais peut néanmoins être accompli. Voici une liste des fichiers qui peuvent être supprimés et de la fonctionnalité correspondante qui est enlevée de manière élégante :

  • dossier ./locale/, ou des sous-dossiers inutilisés (traductions)
  • Tous les thèmes inutilisés dans ./public/themes/ à l’exception du thème par défaut pmahomme.
  • ./libraries/language_stats.inc.php (statistiques de traduction)
  • ./doc/ (documentation)
  • ./setup/ (script de configuration)
  • ./examples/ (exemples de configuration)
  • ./sql/ (scripts SQL pour configurer des fonctionnalités avancées)
  • ./js/src/ (fichiers sources pour reconstruire ./js/dist/)
  • :file:”./js/global.d.ts” Fichier de déclaration de type JS
  • Exécutez rm -rv vendor/tecnickcom/tcpdf && composer dump-autoload –no-interaction –optimize –dev (export au format PDF)
  • Exécuter rm -rv vendor/williamdes/mariadb-mysql-kbs && composer dump-autoload –no-interaction –optimize –dev (liens externes vers les documentations de MariaDB et MySQL)
  • Exécutez “rm -rv vendor/code-lts/u2f-php-server && composer dump-autoload –no-interaction –optimize –dev” (authentification de second facteur U2F)
  • Exécutez “rm -rv vendor/pragmarx/* && composer dump-autoload –no-interaction –optimize –dev” (authentification à deuxième facteur 2FA)
  • Exécutez “rm -rv vendor/bacon/bacon-qr-code && composer dump-autoload –no-interaction –optimize –dev” (génération de QRcode pour l’authentification à deuxième facteur 2FA)

1.45 Je reçois un message d’erreur à propos d’une méthode d’authentification inconnue caching_sha2_password lors de la tentative d’identification

Lorsque vous vous identifiez en utilisant MySQL version 8 ou plus récente, vous pourriez rencontrer un message d’erreur comme celui-ci :

mysqli_real_connect() : Le serveur a demandé une méthode d’authentification inconnue du client [caching_sha2_password]

mysqli_real_connect() : (HY000/2054) : La méthode d’authentification demandée par le serveur est inconnue du client

Cette erreur est due à un problème de compatibilité de version entre PHP et MySQL. Le projet MySQL a introduit une nouvelle méthode d’authentification (nos tests montrent que cela a commencé avec la version 8.0.11) mais PHP n’a pas inclus la possibilité d’utiliser cette méthode d’authentification. PHP rapporte que cela a été corrigé dans la version 7.4 de PHP.

Les utilisateurs qui en font l’expérience sont encouragés à mettre à jour leur installation PHP, cependant une solution de contournement existe. Votre compte utilisateur MySQL peut être configuré pour utiliser l’ancienne authentification avec une commande telle que

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

Configuration

2.1 Le message d’erreur « Warning: Cannot add header information - headers already sent by … » est affiché, quel est le problème ?

Éditer le fichier config.inc.php et s’assurer qu’il n’y a rien (c’est à dire pas de ligne blanche, pas d’espace, pas de caractère…) ni devant la balise <?php au début du fichier, ni après la balise ?> à la fin du fichier.

2.2 phpMyAdmin ne peut pas se connecter à MySQL. Qu’est-ce qui ne va pas ?

Il y a soit une erreur dans votre configuration PHP, soit votre utilisateur/mot de passe. Essayez de faire un petit script qui utilise mysql_connect et voyez s’il fonctionne. Si ce n’est pas le cas, il se peut que vous n’ayez pas compilé la gestion de MySQL dans PHP.

2.3 Le message d’erreur « Warning: MySQL Connection Failed: Can’t connect to local MySQL server through socket “/tmp/mysql.sock” (111)… » est affiché. Que puis-je faire ?

Le message d’erreur peut aussi être : Error #2002 - The server is not responding (or the local MySQL server’s socket is not correctly configured).

Pour cela, connectez-vous à votre serveur et allez dans le répertoire bin de MySQL. Dans ce répertoire il devrait y avoir un fichier appelé mysqladmin. Saisissez alors ./mysqladmin variables, et cela devrait vous donner un paquet d’infos sur votre serveur MySQL, y compris le socket (/tmp/mysql.sock, par exemple). Vous pouvez aussi demander à votre FAI les informations de connexion, ou, si vous hébergez votre serveur, utilisez l’interface de ligne de commande “mysql” et saisissez “status” pour obtenir le type de connexion, le socket et le port.

Vous devez ensuite indiquer à PHP d’utiliser ce socket. Vous pouvez faire cela pour tous les scripts PHP dans le fichier php.ini, ou seulement pour phpMyAdmin dans le fichier config.inc.php. Par exemple : $cfg['Servers'][$i]['socket'] Veuillez aussi vous assurer que les permissions de ce fichier permettent la lecture par votre serveur Web.

Sur mon système RedHat le socket de MySQL est /var/lib/mysql/mysql.sock. Dans votre fichier php.ini vous trouverez une ligne

mysql.default_socket = /tmp/mysql.sock

changez-la pour

mysql.default_socket = /var/lib/mysql/mysql.sock

Redémarrez alors Apache et cela fonctionnera.

Consultez également la section correspondante dans la documentation MySQL.

2.4 Rien ne s’affiche dans mon navigateur quand j’essaie d’exécuter phpMyAdmin, que puis-je faire ?

Essayez de paramétrer la directive $cfg['OBGzip'] à false dans le fichier de configuration de phpMyAdmin. Cela aide parfois. Veuillez également regarder le numéro de version de PHP : s’il contient « b » ou « alpha » cela signifie que vous exécutez une version test de PHP. Ce n’est pas une très bonne idée, veuillez mettre à jour dans une version stable.

2.6 J’obtiens une erreur « Access denied for user: “root@localhost” (Using password: YES) » en essayant d’accéder un serveur MySQL sur un hôte dont le port est redirigé sur mon ordinateur hôte local.

Quand vous utilisez un port sur votre hôte local, que vous redirigez avec port-forwarding vers un autre hôte, MySQL ne résout pas le nom d’hôte local comme attendu. Erik Wasser explique : La solution est : si votre hôte est « localhost », MySQL (l’outil de commande en ligne “mysql aussi) essaie toujours d’utiliser la connexion socket pour accélérer les choses. Et cela ne fonctionne pas dans cette configuration avec redirection de port. Si vous saisissez « 127.0.0.1 » comme nom d’hôte, tout se passe bien et MySQL utilise la connexion TCP.

2.7 Utiliser et créer des thèmes

Voir Thèmes personnalisés.

2.8 J’obtiens des erreurs « Missing parameters », que puis-je faire ?

Vérifiez les points suivants :

  • Dans config.inc.php, essayez de laisser la directive $cfg['PmaAbsoluteUri'] vide. Voir également 4.7 La fenêtre d’authentification est affichée plus d’une fois, pourquoi ?.
  • Votre installation de PHP est peut-être corrompue ou vous avez besoin de mettre à jour votre Zend Optimizer. Voir <https://bugs.php.net/bug.php?id=31134>.
  • Si vous utilisez Hardened PHP avec la directive ini varfilter.max_request_variables et la définissez à sa valeur par défaut (200) ou une autre valeur plus basse, vous pouvez obtenir cette erreur si votre table a un grand nombre de colonnes. Ajustez ce paramètre en conséquence. (Merci à Klaus Dorninger pour l’astuce).
  • Dans le fichier php.ini la directive arg_separator.input, avec une valeur « ; » provoquera cette erreur. Remplacez-la par « &; ».
  • Si vous utilisez Suhosin, vous devriez augmenter les limites de requête.
  • Le répertoire spécifié dans la directive session.save_path du fichier php.ini n’existe pas ou est en lecture seule (ceci peut être causé par le bogue de l’installeur de PHP)..

2.9 Afficher les barres de progression d’upload

Pour pouvoir voir une barre de progression pendant vos uploads, votre serveur doit avoir l’extension uploadprogress et vous devez utiliser PHP 5.4.0 ou supérieure. De plus, l’extension JSON doit être activée dans votre installation PHP.

Si vous utilisez PHP 5.4.0 ou supérieur, vous devez définir le paramètre session.upload_progress.enabled à 1 dans votre fichier php.ini. Cependant, à partir de phpMyAdmin 4.0.4, cette barre de progression basée sur les sessions a été désactivée en raison de problèmes.

2.10 Comment générer une chaîne d’octets aléatoires

Une façon de générer une chaîne d’octets aléatoires adaptée à une utilisation cryptographique consiste à utiliser la fonction random_bytesPHP. Comme cette fonction renvoie une chaîne binaire, la valeur renvoyée doit être convertie au format imprimable avant de pouvoir la copier.

Par exemple, la directive de configuration $cfg['blowfish_secret'] requiert une chaîne de 32 octets. La commande suivante peut être utilisée pour générer une représentation hexadécimale de cette chaîne.

php -r 'echo bin2hex(random_bytes(32)) . PHP_EOL;'

L’exemple ci-dessus produira quelque chose de semblable :

f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851

Et ensuite cette valeur hexadécimale peut être utilisée dans le fichier de configuration.

$cfg['blowfish_secret'] = sodium_hex2bin('f16ce59f45714194371b48fe362072dc3b019da7861558cd4ad29e4d6fb13851');

La fonction “sodium_hex2bin <https://www.php.net/sodium_hex2bin>”_ est utilisée ici pour reconvertir la valeur hexadécimale au format binaire.

Limitations connues

3.1 En utilisant l’authentification HTTP, un utilisateur qui se déconnecte ne peut pas se reconnecter avec le même compte.

Cela est dû au mécanisme du protocole d’authentification utilisé par phpMyAdmin. Pour contourner ce problème : fermez toutes les fenêtres de navigateur ouvertes et retournez dans phpMyAdmin. Vous devriez être en mesure de vous reconnecter.

3.2 En exportant une grosse table en mode compressé, j’obtiens une erreur de limitation mémoire ou une erreur de dépassement de limite de temps.

Les fichiers d’export compressés sont construits en mémoire et à cause de cela sont limités par la limite mémoire de php. Pour les exports gzip/bzip2, ceci peut être outrepassé depuis la version 2.5.4 en utilisant $cfg['CompressOnFly'] (activé par défaut). Les exports zip ne peuvent pas être traitées de cette façon, donc si vous avez besoin de fichiers zip pour des exports plus importants, vous devrez utiliser un autre moyen.

3.3 Avec les tables InnoDB, je perds les relations de clés étrangères quand je renomme une table ou une colonne.

C’est un bogue de InnoDB, consulter <https://bugs.mysql.com/bug.php?id=21704>.

3.4 Je n’arrive pas à importer des fichiers d’exportation que j’ai créés avec l’outil mysqldump fourni dans la distribution de MySQL serveur.

Le problème vient du fait que les anciennes versions de mysqldump créaient des commentaires invalides comme ceci :

-- MySQL dump 8.22
--
-- Host: localhost Database: database
---------------------------------------------------------
-- Server version 3.23.54

La partie invalide du code est la ligne horizontale de tirets qui apparaît une fois dans chaque fichier d’exportation créé avec mysqldump. Si vous voulez utiliser votre fichier d’exportation, vous devrez le transformer en code valide MySQL. Cela signifie que vous devrez ajouter une espace après les deux premiers tirets de la ligne ou ajouter un # devant : -- ------------------------------------------------------- ou #---------------------------------------------------------

3.5 En utilisant des dossiers imbriqués, les hiérarchies multiples sont incorrectement affichées.

Veuillez noter que vous ne devez pas utiliser la chaîne de séparation plusieurs fois sans insérer de caractère entre ces chaînes, ou au début/fin de votre nom de table. Si vous devez le faire, cherchez un autre séparateur de table ou désactivez la fonctionnalité.

3.6 (retiré).

3.7 J’ai une table avec beaucoup de colonnes (100+) et quand j’essaie d’afficher la table, j’obtiens une série d’erreurs du genre « Warning: unable to parse url ». Comment corriger cela ?

Votre table n’a pas de primary key ou de unique key, ce qui oblige à utiliser une expression longue pour identifier cette ligne. Cela pose des problèmes à la fonction parse_url. La solution de rechange est de créer une primary key ou une unique key.

3.8 Je ne peux pas utiliser de formulaires HTML (cliquables) dans des colonnes où j’ai mis une transformation MIME !

À cause d’un container de formulaires (utilisé pour les cases à cocher de suppression de plusieurs lignes), les formulaires imbriqués ne peuvent pas être mis à l’intérieur de la table ou phpMyAdmin affiche les résultats. Vous pouvez cependant utiliser tout formulaire à l’intérieur d’une table si vous gardez le container de formulaires parent avec la cible tbl_row_delete.php et mettez vos éléments de saisie à l’intérieur. Si vous utilisez un champ de soumission de saisie personnalisé, le formulaire sera soumis lui-même vers la page d’affichage à nouveau, où vous pouvez valider les $HTTP_POST_VARS dans une transformation. Pour un tutoriel sur la façon d’utiliser efficacement les transformations, voir notre section Liens sur la page d’accueil officielle de phpMyAdmin.

3.9 J’obtiens des messages d’erreur en utilisant « –sql_mode=ANSI » pour le serveur MySQL.

Quand MySQL est exécuté en mode de compatibilité ANSI, il y a des différences majeures dans la façon dont SQL est structuré (voir <https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html>). Le plus important, le caractère guillemet ( ») est interprété en tant que caractère guillemet identifiant et non comme le caractère guillemet annonçant une chaîne, ce qui provoque des requêtes SQL invalides dans beaucoup d’opérations internes de phpMyAdmin. Il n’y a pas de solution de rechange à ce comportement. Des nouvelles sur ce sujet seront postées dans le rapport de bogue #1013.

3.10 Homonymes et pas de clé primaire : Quand les résultats d’un SELECT affichent plus d’une colonne avec la même valeur (par exemple SELECT nom from employes where prenom like 'A%' et que deux valeurs « Smith » sont affichées), si je clique sur Modifier, je ne peux pas être sûr que je modifie la bonne ligne.

Veuillez vous assurer que votre table a une primary key, ainsi phpMyAdmin peut l’utiliser pour les liens  Modifier et Effacer.

3.11 Le nombre d’enregistrements pour les tables InnoDB est incorrect.

phpMyAdmin utilise une méthode rapide pour obtenir le nombre de lignes, et cette méthode ne renvoie qu’un nombre approximatif pour les tables InnoDB. Voir $cfg['MaxExactCount'] pour le moyen de modifier ces résultats, mais cela peut avoir un sérieux impact sur les performances. Cependant, ce nombre approximatif peut être facilement remplacé par le nombre exact en cliquant sur le nombre approximatif. Ceci peut être réalisé pour toutes les tables à la fois en cliquant sur la somme des lignes affichée en bas.

3.12 (retiré).

3.13 J’obtiens une erreur en saisissant USE suivi du nom d’une base de données contenant un trait d’union.

Les tests que j’ai effectués avec l’API actuelle de MySQL 5.1.49, montre que cette API n’accepte pas cette syntaxe pour la commande USE.

3.14 Je n’arrive pas à naviguer dans une table quand je n’ai pas le droit de faire un SELECT sur une des colonnes.

C’est une limitation connue de phpMyAdmin depuis le début et ce ne sera probablement pas résolu à l’avenir.

3.15 (retiré).

3.16 (retiré).

3.17 (retiré).

3.18 Lors de l’import d’un fichier CSV qui contient plusieurs tables, elles sont fusionnées en une seule.

Il n’existe pas de moyen fiable de différencier les tables en format CSV. Pour le moment, vous devrez fractionner les fichiers CSV contenant plusieurs tables.

3.19 Lors de l’import d’un fichier et quand phpMyAdmin détermine la structure de données appropriée, il n’utilise que les types int, decimal et varchar types.

Actuellement, le système de détection de type d’import ne peut assigner que ces types MySQL aux colonnes. Dans le futur, d’autres seront ajoutés, mais en attendant, vous devrez éditer la structure après l’import. Vous devez également noter que phpMyAdmin utilisera la taille de l’élément le plus gros pour toute colonne donnée comme taille de colonne pour le type approprié. Si vous savez que vous importerez des éléments plus gros pour cette colonne, vous devez alors ajuster la taille de la colonne. Ceci est fait dans un but d’efficacité.

3.20 Après la mise à jour, certains signets disparaissent ou leur contenu ne peut être affiché.

À un certain moment, le jeu de caractères utilisé pour stocker les signets a changé. Il est préférable de recréer vos signets à partir de la nouvelle version de phpMyAdmin.

3.21 Je ne peux pas me connecter avec un nom d’utilisateur contenant des caractères unicode comme « à ».

Ceci peut arriver si le serveur MySQL n’est pas configuré pour utiliser par défaut le jeu de caractères utf-8. Ceci est une limitation de l’interaction de PHP et MySQL. Il n’existe pas de moyen pour PHP pour définir le jeu de caractères avant l’authentification.

FAI et installation multi-utilisateurs

4.1 Je suis un FAI. Puis-je configurer une seule copie centralisée de phpMyAdmin ou dois-je faire l’installation pour chaque client ?

Depuis la version 2.0.3, vous pouvez configurer une copie centralisée de phpMyAdmin pour tous vos utilisateurs. Le développement de cette fonctionnalité a été aimablement sponsorisé par NetCologne GmbH. Ceci requiert une configuration correcte de la gestion des utilisateurs MySQL et l’utilisation de l’authentification HTTP ou par cookie pour phpMyAdmin.

4.2 Quel est le meilleur moyen de sécuriser phpMyAdmin contre les attaques malicieuses ?

Si vous utilisez un serveur qui ne peut pas être accédé par d’autres personnes, il est suffisant d’utiliser la protection de répertoire fournie avec votre serveur Web (avec Apache vous pouvez utiliser les fichiers .htaccess, par exemple). Si d’autres personnes ont un accès telnet à votre serveur, vous devriez utiliser les fonctionnalités d’authentification par HTTP ou par cookie de phpMyAdmin.

Suggestions :

  • Votre fichier config.inc.php devrait être chmod 660.
  • Tous les fichiers phpMyAdmin devraient être chown -R phpmy:apache, où phpmy est un utilisateur dont le mot de passe est connu de vous seul, et apache est le groupe avec lequel Apache est exécuté.
  • Suit les recommandations de sécurité pour PHP et votre serveur Web.

4.3 J’obtiens des erreurs sur l’impossibilité d’inclure un fichier dans /lang ou dans /libraries.

Vérifier votre fichier php.ini, ou demander à votre administrateur système de le faire. include_path doit contenir « . » dans ses chemins et open_basedir, s’il est utilisé, doit contenir « . » et « ./lang » pour permettre un fonctionnement normal de phpMyAdmin.

4.4 phpMyAdmin donne toujours « Accès refusé » en utilisant l’authentification HTTP.

Cela peut arriver pour différentes raisons :

  • $cfg['Servers'][$i]['controluser'] et/ou $cfg['Servers'][$i]['controlpass'] sont erronés.
  • L’utilisateur/mot de passe que vous spécifiez dans le dialogue de connexion sont invalides.
  • Vous avez déjà configuré un mécanisme de sécurité pour le répertoire phpMyAdmin, par exemple un fichier .htaccess. Cela doit interférer avec l’authentification phpMyAdmin, aussi, supprimez-le.

4.5 Est-il possible de laisser les utilisateurs créer leurs propres bases de données ?

À partir de la version 2.2.5, dans la page de gestion des utilisateurs, vous pouvez mettre un méta-caractère dans le nom de la base de données pour un utilisateur (par exemple « joe% »), et mettre les privilèges que vous voulez. Par exemple, en ajoutant SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER permettra à un utilisateur de créer/administrer ses bases de données.

4.6 Comment puis-je utiliser en plus l’authentification basée sur l’hôte ?

Si vous avez des règles existantes d’un ancien fichier .htaccess, vous pouvez le prendre et ajouter le nom d’utilisateur entre les chaînes 'deny'/'allow' et 'from'. Utiliser le méta-caractère '%' pour le nom d’utilisateur est un grand avantage si votre installation est adaptée pour l’utiliser. Ensuite, vous pouvez ajouter ces lignes mises à jour dans le tableau $cfg['Servers'][$i]['AllowDeny']['rules'].

Si vous voulez un exemple préfabriqué, vous pouvez essayer celui-ci. Il empêche l’utilisateur “root” de se connecter à partir de n’importe quels réseaux autres que les réseaux IP privés.

//block root from logging in except from the private networks
$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'] = [
    'deny root from all',
    'allow root from localhost',
    'allow root from 10.0.0.0/8',
    'allow root from 192.168.0.0/16',
    'allow root from 172.16.0.0/12',
];

4.7 La fenêtre d’authentification est affichée plus d’une fois, pourquoi ?

Ceci arrive si vous utilisez une URL pour démarrer phpMyAdmin qui est différente de celle définie dans votre $cfg['PmaAbsoluteUri']. Par exemple, s’il manque « www », ou si vous saisissez une adresse IP alors qu’un nom de domaine est défini dans le fichier de configuration.

4.8 Quels paramètres puis-je utiliser dans l’URL de démarrage de phpMyAdmin ?

Au démarrage de phpMyAdmin, vous pouvez utiliser les paramètres db et server. Ce dernier peut contenir soit l’index numérique de l’hôte (à partir de $i du fichier de configuration) soit un des noms d’hôte présents dans le fichier de configuration.

Par exemple, pour accéder directement à une base de données particulière, une URL peut être construite comme https://example.com/phpmyadmin/?db=sakila.

Modifié dans la version 4.9.0: La prise en charge des paramètres pma_username et pma_password a été supprimée dans phpMyAdmin 4.9.0 (voir PMASA-2019-4).

Navigateurs ou systèmes d’exploitation client

5.1 J’obtiens une erreur « out of memory », ou mes contrôles ne sont plus fonctionnels, en essayant de créer une table avec plus de 14 colonnes.

Nous n’avons pu reproduire ce problème que sous Win98/98SE. En testant avec WinNT4 ou Win2K, nous avons pu facilement créer plus de 60 colonnes. Un moyen de contournement est de créer un plus petit nombre de colonnes, puis de revenir dans les propriétés de la table et d’ajouter les autres colonnes.

5.2 Avec Xitami 2.5b4, phpMyAdmin ne traite pas les champs formulaires.

Ce n’est pas un problème de phpMyAdmin mais un bogue connu de Xitami : vous rencontrerez ce problème chaque fois qu’un script/site Web utilise des formulaires. Mettez à jour votre serveur Xitami ou utilisez une précédente version.

5.3 J’ai des problèmes d’exportation de table avec Konqueror (phpMyAdmin 2.2.2).

Avec Konqueror 2.1.1 : les exports classiques, zippés et gzippés fonctionnent correctement, sauf que le nom de fichier proposé est toujours “tbl_dump.php”. Les exports au formats bzip2 ne semblent pas fonctionner. Avec Konqueror 2.2.1 : les fichiers d’exportation simples fonctionnent ; les fichiers d’exportation zip sont placés dans le répertoire temporaire de l’utilisateur, aussi, ils doivent être déplacés avant de fermer Konqueror, sinon ils disparaissent. Les fichiers d’exportation gzip donnent un message d’erreur. Des tests doivent être effectués pour Konqueror 2.2.2.

5.5 (retiré).

5.6 (retiré).

5.7 Je rafraîchis (actualise) mon navigateur, et je reviens à la page de bienvenue.

Certains navigateurs gèrent le clic-droit dans le cadre que vous voulez rafraîchir, faites cela dans le cadre approprié.

5.8 Avec Mozilla 0.9.7 j’ai des problèmes en envoyant une requête modifiée dans la boîte de requêtes.

Cela ressemble à un bogue de Mozilla : la version 0.9.6 était OK. Nous garderons ce bogue à l’esprit pour les futures versions de Mozilla.

5.9 Avec Mozilla 0.9.? à 1.0 et Netscape 7.0-PR1, je ne peux pas taper d’espace dans le zone d’édition de requête SQL : la page défile vers le bas.

Ceci est un bogue Mozilla (voir bogue #26882 sur Bugzilla).

5.10 (retiré).

5.11 Les caractères ASCII-étendu comme le tréma (umlaut allemand) sont mal affichés.

Veuillez vous assurer que vous avez paramétré le jeu de caractères de votre navigateur sur l’un des fichiers de langue que vous avez choisi dans la page de démarrage de phpMyAdmin. Vous pouvez également essayer le mode auto détection, mode qui est géré par les versions récentes de la plupart des navigateurs.

5.12 Mac OS X : le navigateur Safari change les caractères spéciaux en « ? ».

Ce problème a été rapporté par un utilisateur de macOS qui ajoute que Chimera, Netscape et Mozilla n’ont pas ce problème.

5.13 (retiré)

5.14 (retiré)

5.15 (retiré)

5.16 Avec Internet Explorer, j’obtiens des erreurs JavaScript « Accès refusé ». Ou je n’arrive pas à faire fonctionner phpMyAdmin sous Windows.

Vérifiez les points suivants :

  • Vous avez peut-être défini votre paramètre $cfg['PmaAbsoluteUri'] du fichier config.inc.php avec une adresse IP et vous démarrez phpMyAdmin avec une URL contenant un nom de domaine, ou inversement.
  • Les paramètres de sécurité de Internet Explorer et/ou du Centre de sécurité Microsoft sont trop élevés et empêchent par conséquent l’exécution des scripts.
  • Le pare-feu de Windows bloque Apache et MySQL. Vous devez autoriser les ports HTTP (80 ou 443) et le port MySQL (normalement 3306) en entrée et en sortie.

5.17 Avec Firefox, je ne peux pas supprimer des lignes de données ou une base de données.

Plusieurs utilisateurs ont confirmé que l’extension « Tabbrowser » qu’ils avaient installé sur leur Firefox est la cause de ce problème.

5.18 (retiré)

5.19 J’obtiens des erreurs JavaScript dans mon navigateur.

Des problèmes ont été rapportés avec la combinaison de plusieurs extensions de navigateur. Désactivez toutes les extensions et vider le cache de votre navigateur pour voir si le problème disparaît.

5.20 J’obtiens des erreurs sur la violation de politique de sécurité de contenu.

Si vous obtenez des erreurs du type :

Refused to apply inline style because it violates the following Content Security Policy directive

Ceci est habituellement provoqué par un logiciel, qui réécrit de façon incorrecte les en-têtes Content Security Policy. Il s’agit généralement de l’antivirus du proxy ou d’extensions de votre navigateur.

Si vous obtenez de telles erreurs, essayez de désactiver le proxy HTTP dans l’antivirus ou de désactiver la réécriture des en-têtes Content Security Policy dans celui-ci. Si cela ne fonctionne toujours pas, essayez de désactiver les extensions de votre navigateur.

Cela paut être aussi un problème de configuration du serveur (si le serveur Web est configuré pour émettre des en-têtes Content Security Policy, ils peuvent écraser ceux de phpMyAdmin).

Les programmes connus pour provoquer de telles erreurs sont :

  • Kaspersky Internet Security

5.21 Je reçois des erreurs au sujet d’une opération potentiellement dangereuse lors de la recherche de table ou de l’exécution d’une requête SQL.

Si vous obtenez des erreurs du type :

A potentially unsafe operation has been detected in your request to this site.

Cela est généralement causé par le pare-feu d’application Web faisant filtrage des demandes. Il essaie d’empêcher l’injection SQL, cependant phpMyAdmin est un outil conçu pour exécuter des requêtes SQL, donc il rend inutilisable.

Veuillez autoriser les scripts phpMyAdmin dans les paramètres du pare-feu de l’application web ou les désactiver complètement pour le chemin phpMyAdmin.

Les programmes connus pour provoquer de telles erreurs sont :

  • Pare-feu d’application Web Wordfence

Utiliser phpMyAdmin

6.1 Je ne peux pas insérer de lignes dans une table / je ne peux pas créer une table - MySQL renvoie une erreur SQL.

Examinez l’erreur SQL avec attention. Le problème est souvent provoqué par la spécification d’un mauvais type de colonne. Les erreurs courantes sont :

  • l’utilisation de VARCHAR sans l’argument de taille
  • l’utilisation de TEXT ou BLOB avec une taille en argument

Regardez également le chapitre syntaxe dans le manuel MySQL pour confirmer que votre syntaxe est correcte.

6.2 Quand je crée une table, je définis un index pour deux colonnes et phpMyAdmin ne génère qu’un seul index avec ces deux colonnes.

C’est la façon de créer un index multi-colonnes. Si vous voulez deux index, créer le premier en créant la table, sauvegardez, puis affichez les propriétés de la table et cliquez sur le lien Index pour créer l’autre index.

6.3 Comment puis-je insérer une valeur nulle dans ma table ?

Depuis la version 2.2.3, il y a une case à cocher pour chaque colonne qui peut être nulle. Avant la version 2.2.3, vous deviez saisir « null », sans les guillemets, comme valeur de colonne. Depuis la version 2.5.5, vous devez utiliser la case à cocher pour obtenir une réelle valeur NULL, aussi, si vous saisissez « NULL » cela signifie que vous voulez un NULL littéral dans la colonne et non une valeur NULL (cela fonctionne dans PHP4).

6.4 Comment puis-je sauvegarder ma base de données ou ma table ?

Cliquez sur le nom d’une base de données ou d’une table dans le panneau de navigation pour afficher les propriétés. Ensuite à partie du menu, cliquez sur « Export », pour exporter la structure, les données ou les deux. Ceci générera les déclarations SQL standards qui pourront être utilisées pour recréer votre base de données/table. Vous devrez utiliser « Enregistrer comme un fichier » pour que phpMyAdmin puisse transmettre le fichier d’export à votre PC. En fonction de votre configuration PHP, vous verrez des options de compression du fichier d’export. Consultez aussi la variable de configuration $cfg['ExecTimeLimit']. Pour de l’aide supplémentaire sur ce sujet, recherchez le mot « export » dans ce document.

6.5 Comment puis-je restaurer (transmettre) ma base de données ou ma table en utilisant un fichier d’exportation ? Comment puis-je exécuter un fichier « .sql » ?

Cliquer sur le nom d’une base de données dans le cadre de navigation pour afficher les propriétés. Sélectionnez « Importer » dans la liste des onglets dans le cadre de droite (ou « SQL » si votre version de phpMyAdmin est antérieure à la version 2.7.0). Dans la section « Emplacement du fichier texte », saisissez votre nom de fichier d’exportation, ou cliquez sur le bouton Parcourir. Puis cliquez sur Exécuter. Avec la version 2.7.0, le moteur d’import a été ré-écrit. Si c’est possible, nous vous suggérons de mettre à jour pour tirer partie des nouvelles fonctionnalités. Pour de l’aide supplémentaire sur ce sujet, recherchez le mot « upload » dans ce document.

Note : Pour les erreurs lors de l’importation des dumps exportées depuis les anciennes versions de MySQL vers les nouvelles versions de MySQL, veuillez vérifier 6.41 Je reçois des erreurs d’importation lors de l’importation des dumps exportées depuis les anciennes versions de MySQL (antérieures à 5.7.6) vers les nouvelles versions de MySQL (5.7.7+), mais elles fonctionnent correctement lorsqu’elles sont importées sur les mêmes anciennes versions ?.

6.6 Comment puis-je utiliser la table relation dans Query-by-example ?

Voici un exemple avec les tables personnes, villes et pays, toutes situées dans la base de données « mabdd ». Si vous n’avez pas de table pma_relation, créez-la comme cela est décrit dans la section Configuration. Ensuite, créez les tables d’exemple :

CREATE TABLE REL_countries (
country_code char(1) NOT NULL default '',
description varchar(10) NOT NULL default '',
PRIMARY KEY (country_code)
) ENGINE=MyISAM;

INSERT INTO REL_countries VALUES ('C', 'Canada');

CREATE TABLE REL_persons (
id tinyint(4) NOT NULL auto_increment,
person_name varchar(32) NOT NULL default '',
town_code varchar(5) default '0',
country_code char(1) NOT NULL default '',
PRIMARY KEY (id)
) ENGINE=MyISAM;

INSERT INTO REL_persons VALUES (11, 'Marc', 'S', 'C');
INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C');

CREATE TABLE REL_towns (
town_code varchar(5) NOT NULL default '0',
description varchar(30) NOT NULL default '',
PRIMARY KEY (town_code)
) ENGINE=MyISAM;

INSERT INTO REL_towns VALUES ('S', 'Sherbrooke');
INSERT INTO REL_towns VALUES ('M', 'Montréal');

Pour configurer les liens appropriés et afficher l’information :

  • sur la table « REL_persons » cliquer sur Structure, puis sur Gestion des relations
  • pour « town_code », choisir dans les listes déroulantes, « mydb », « REL_towns », « town_code » respectivement pour la base de données, la table et la colonne étrangères
  • pour « country_code », choisir dans les listes déroulantes, « mabdd », « REL_countries », « country_code » respectivement pour la base de données, la table et la colonne étrangères
  • sur la table « REL_towns » cliquer sur Structure, puis Gestion des relations
  • dans « Colonne à afficher », choisir « Description »
  • répétez les deux précédentes étapes pour la table « REL_countries »

Puis tester comme suit :

  • Cliquer le nom de base de données dans le cadre de navigation
  • choisir « Requête »
  • utilisez les tables : persons, towns, countries
  • cliquer sur « Mise-à-jour de la requête »
  • dans la ligne des colonnes, choisissez persons.person_name et cliquez sur la case à cocher « Afficher »
  • faites la même chose pour towns.description et countries.descriptions dans les deux autres colonnes
  • cliquer sur « Mise-à-jour de la requête » et vous verrez dans la boîte de requête que la jointure correcte a été générée
  • cliquer sur « Exécuter la requête »

6.7 Comment puis-je utiliser la fonctionnalité « Colonnes à afficher » ?

À partir de l’exemple précédent, créez la table pma__table_info comme expliqué dans la section Configuration, puis parcourez votre table personnes, et déplacez votre souris au-dessus du code ville ou du code pays. Voir aussi 6.21 En mode modifier/insérer, comment puis-je voir une liste des valeurs possibles pour une colonne, basée sur une table étrangère ? pour une fonctionnalité que « afficher colonne » active : une liste déroulante des valeurs possibles.

6.8 Comment puis-je produire un schéma PDF de ma base de données ?

Tout d’abord, les variables « relation », « table_coords » et « pdf_pages » doivent être renseignées.

  • Sélectionnez votre base de données dans le cadre de navigation.
  • Choisissez « :guilabel:`Concepteur » dans la barre de navigation en haut.
  • Déplacez les tables comme vous le souhaitez.
  • Choisissez « Exporter le schéma » dans le menu de gauche.
  • La fenêtre d’exportation s’ouvrira alors.
  • Sélectionnez le type d’exportation PDF, et ajustez les autres paramètres.
  • Cliquez sur Exécuter et le téléchargement du fichier commencera.

Voir aussi

Relations

6.9 phpMyAdmin change le type de l’une de mes colonnes !

Non, c’est MySQL qui fait des changements silencieux de type de colonne.

6.10 En créant un privilège, qu’arrive-t-il aux traits de soulignement (underscore) dans le nom de la base de données ?

Si vous ne mettez pas de barre oblique inverse (backslash) avant le trait de soulignement, c’est un méta-caractère pour les autorisations, et le trait de soulignement signifie « tout caractère ». Aussi, si le nom de base de données est « john_db », l’utilisateur aura des droits sur john1db, john2db… Si vous placez un backslash (« ») avant le trait de soulignement (« _ »), cela signifie que le nom de la base de données contiendra un trait de soulignement.

6.11 Quel est ce curieux symbole ø dans les pages de statistiques ?

Il signifie « moyenne ».

6.12 Je veux comprendre certaines options de Exporter.

Structure :

  • « ADD DROP TABLE » ajoutera une ligne disant à MySQL de supprimer la table si elle existe déjà pendant l’importation. Cela ne supprime PAS la table après votre export, cela n’affecte que le fichier d’importation.
  • Ajouter « IF NOT EXISTS » créera seulement la table si elle n’existe pas. Sinon, vous pouvez obtenir une erreur si le nom de table existe mais qu’elle a une structure différente.
  • « Inclure la valeur courante de l’AUTO_INCREMENT » assure que la valeur AUTO_INCREMENT (s’il y en a une) sera incluse dans la sauvegarde.
  • « Protéger les noms des tables et des colonnes par des « ` » » assure que les noms de colonnes et de tables contenant des caractères spéciaux sont protégés.
  • « Inclure sous forme de commentaires » inclut les commentaires des colonnes, les relations et les types de médias définis dans la base de données pmadb dans le fichier d’exportation en tant que commentaires SQL (/* xxx */).

Données :

  • « Insertions complètes » ajoute les noms de colonne sur chaque commande INSERT, pour une meilleure documentation (mais le fichier résultant est plus gros).
  • « Insertions étendues » fournit une fichier d’exportation plus petit en utilisant seulement une fois INSERT et le nom de la table.
  • « Insertions avec délais (DELAYED) » sont très bien expliquées dans le Manuel MySQL.
  • « Ignorer les erreurs de doublons (INSERT IGNORE) » traite les erreurs comme des avertissements. À nouveau, vous pourrez trouver plus de détails dans le Manuel MySQL, mais en gros, avec cette option, les valeurs invalides sont ajustées et insérées plutôt que de provoquer l’échec de la déclaration tout entière.

6.13 J’aimerais créer une base de données avec un point dans son nom.

C’est une mauvaise idée, car dans MySQL la syntaxe « database.table » est la manière normale de référencer une base de données et un nom de table. Pire, MySQL vous laissera normalement créer cette base de données avec un point, mais alors vous ne pourrez pas travailler avec, ni la supprimer.

6.14 (retiré).

6.15 Je veux ajouter une colonne BLOB et ajouter un index dessus, mais MySQL dit « BLOB column “…” used in key specification without a key length ».

La bonne manière de faire cela, est de créer une colonne sans index, puis d’afficher la structure de la table et d’utiliser le dialogue « Créer une clef ». Sur cette page, vous pourrez alors choisir votre colonne BLOB, et définir une taille pour l’index sur une colonne BLOB.

6.16 Comment puis-je me déplacer simplement dans une page remplie de champs modifiables ?

Vous pouvez utiliser Ctrl+flèches (Option+flèches dans Safari) pour vous déplacer dans la plupart des pages ayant beaucoup de champs d’édition (changements de structure de tables, édition de lignes, etc.).

6.17 Transformations : je ne peux pas saisir mon propre type mime ! À quoi peut bien servir cette fonctionnalité alors ?

Définir des types mime n’a pas d’utilité si on ne peut pas mettre de transformations dessus. Sinon vous pouvez seulement mettre un commentaire sur la colonne. En saisissant votre propre type mime, vous causerez de sérieux problèmes de vérification de syntaxe et de validation, et introduirez une situation de grand risque de mauvaise interprétation de saisie de l’utilisateur. Au lieu de cela, vous pouvez initialiser des types mime en utilisant des fonctions ou des définitions de types mime vides.

De plus, vous avez une vue d’ensemble de tous les types MIME disponibles. Qui connaît tous ces types MIME par cœur de sorte qu’ils puissent les saisir à volonté ?

6.18 Signets : Où puis-je stocker les signets ? Pourquoi aucun signet n’est visible en-dessous de la boîte de requête ? Quel est le but de ces variables ?

Il faut avoir configuré les Stockage de la configuration de phpMyAdmin pour utiliser la fonctionnalité de signets. Une fois réalisé, il est possible d’utiliser les signets dans l’onglet SQL.

Voir aussi

Signets

6.19 Comment puis-je créer simplement un document LATEX pour y inclure une table exportée ?

Vous pouvez inclure simplement une table dans vos documents LATEX, un exemple de document minimaliste devrait ressembler à celui qui suit (en supposant que vous avez une table exportée dans le fichier table.tex) :

\documentclass{article} % or any class you want
\usepackage{longtable}  % for displaying table
\begin{document}        % start of document
\include{table}         % including exported table
\end{document}          % end of document

6.20 Je vois beaucoup de bases de données qui ne sont pas à moi et que je ne peux accéder.

Vous avez un de ces privilèges globaux : CREATE TEMPORARY TABLES, SHOW DATABASES, LOCK TABLES. Ces privilèges permettent également aux utilisateurs de voir tous les noms de bases de données. Donc, si vos utilisateurs n’ont pas besoin de ces privilèges, vous pouvez les supprimer et leur liste de bases de données sera raccourcie.

6.21 En mode modifier/insérer, comment puis-je voir une liste des valeurs possibles pour une colonne, basée sur une table étrangère ?

Vous devez configurer les liens appropriés entre les tables, ainsi que la « Colonne à afficher » (display column) dans la table étrangère. Voir la section 6.6 Comment puis-je utiliser la table relation dans Query-by-example ? pour un exemple. Ensuite, s’il y a 100 valeurs ou moins dans la table étrangère, une liste déroulante des valeurs sera disponible. Vous verrez deux listes de valeurs, la première liste contenant la clé et la colonne à afficher, la seconde liste contenant la colonne à afficher et la clé. La raison de cela est de permettre de saisir la première lettre soit de la clé, soit de la colonne à afficher. Pour 100 valeurs ou plus, une fenêtre distincte apparaîtra, pour parcourir les valeurs de clés étrangères et en choisir une. Pour changer cette limite par défaut de 100, voir $cfg['ForeignKeyMaxLimit'].

6.22 Signets : Puis-je exécuter automatiquement en entrant en mode Afficher pour une table ?

Oui. Si un signet a le même libellé qu’un nom de table et qu’il n’est pas public, il sera exécuté.

Voir aussi

Signets

6.23 Export : J’ai entendu dire que phpMyAdmin peut exporter des fichiers au format Microsoft Excel ?

Vous pouvez utiliser le format CSV pour Microsoft Excel, qui fonctionne tel quel.

Modifié dans la version 3.4.5: Depuis phpMyAdmin 3.4.5, le support pour l’export direct vers Microsoft Excel version 97 et supérieur a été retiré.

6.24 Maintenant que phpMyAdmin gère nativement les commentaires de colonnes MySQL 4.1.x, qu’arrive-t-il à mes commentaires de colonnes stockés dans pmadb ?

La migration automatique des commentaires de colonne de style pmadb d’une table vers le format natif est effectuée chaque fois que vous entrez dans la page Structure pour cette table.

6.25 (retiré).

6.26 Comment puis-je sélectionner un ensemble de lignes ?

Cliquez sur la première ligne, puis maintenez appuyée la touche MAJ et cliquez sur la dernière ligne. Ceci fonctionne partout où vous pouvez voir des lignes, par exemple dans le mode Navigation ou sur la page Structure.

6.27 Quels formats de chaînes puis-je utiliser ?

Dans tous les endroits où phpMyAdmin accepte le formatage de chaînes, vous pouvez utiliser l’expansion de format de chaînes @VARIABLE@ et strftime. Les variables étendues dépendent du contexte (par exemple, si vous avez choisi une table, vous ne pouvez pas obtenir le nom de la table), mais les variables suivantes peuvent être utilisées :

@HTTP_HOST@
Hôte HTTP exécutant phpMyAdmin
@SERVER@
Nom du serveur MySQL
@VERBOSE@
Nom complet du serveur MySQL tel qu’indiqué dans la $cfg['Servers'][$i]['verbose']
@VSERVER@
Nom complet du serveur MySQL si défini, sinon normal
@DATABASE@
Base de données actuellement ouverte
@TABLE@
Table actuellement ouverte
@COLUMNS@
Colonnes de la table actuellement ouverte
@PHPMYADMIN@
Version de phpMyAdmin

6.28 (retiré).

6.29 Pourquoi ne puis-je obtenir un graphique à partir de ma table des résultats de requêtes ?

Toutes les tables ne peuvent pas permettre la création d’un graphique. Seules les tables ayant une, deux ou trois colonnes peuvent être visualisées sous forme de graphique. De plus, la table doit être dans un format spécial pour que le script de création de graphique la comprenne. Les formats actuellement supportés sont disponibles sur Tableaux.

6.30 Import : Comment puis-je importer des fichiers ESRI Shapefiles ?

Un fichier ESRI Shapefile est en fait un ensemble de fichiers dans lesquels .shp contient les données de géométrie et .dbf les données relatives à ces données de géométrie. Pour lire les données du fichier .dbf, PHP doit être compilé avec l’extension dBase (–enable-dbase). Sans quoi, seules données de géométrie seront importées.

Pour uploader ces ensembles de fichiers, vous pouvez utiliser une des méthodes suivantes :

Configurer le répertoire d’upload avec $cfg['UploadDir'], uploader les deux fichiers .shp et .dbf avec le même nom et choisir le fichier .shp dans la page d’import.

Créer une archive zip avec les fichiers .shp et .dbf et l’importer. Pour que cela fonctionne, vous devez définir $cfg['TempDir'] dans un répertoire où l’utilisateur du serveur Web à des droits d’écriture (par exemple './tmp').

Pour créer un répertoire temporaire sur un système basé sur UNIX, vous pouvez faire ceci :

cd phpMyAdmin
mkdir tmp
chmod o+rwx tmp

6.31 Comment créer une relation dans le Concepteur ?

La colonne descriptive est montrée en rose. Pour indiquer qu’une colonne est ou n’est plus la colonne descriptive, cliquer l’icône « Colonne descriptive », puis cliquer sur le nom de colonne approprié.

6.32 Comment puis-je utiliser la fonctionnalité zoom de recherche ?

La fonctionnalité de recherche Zoom est une alternative à la fonctionnalité de recherche dans les tables. Elle permet d’explorer une table en représentant ses données dans un diagramme de dispersion. Vous pouvez localiser cette fonctionnalité en sélectionnant une table et en cliquant sur l’onglet Recherche. Un des sous-onglets de cette page est l’option Recherche zoom.

Considérons la table REL_persons dans 6.6 Comment puis-je utiliser la table relation dans Query-by-example ? par exemple. Pour utiliser la recherche Zoom, deux colonnes doivent être sélectionnées, par exemple, id et town_code. Les valeurs id seront représentées sur un axe et les valeurs town_code sur l’autre. Chaque ligne sera représentée comme un point dans le diagramme de dispersion basée sur son id et town_code. Vous pouvez ajouter deux critères de recherche additionnels en plus des deux champs à afficher.

Vous pouvez choisir le libellé des champs à afficher pour chaque point. Si une colonne à afficher a été définie pour une table (voir 6.7 Comment puis-je utiliser la fonctionnalité « Colonnes à afficher » ?), elle est prise comme libellé à moins de spécifier autre chose. Vous pouvez aussi sélectionner le maximum de lignes que vous voulez voir affichées dans le diagramme en l’indiquant dans le champ “Nombre maximum de lignes à représenter”. Quand vos choix sont terminés, cliquez sur “Exécuter” pour afficher le diagramme.

Quand le diagramme a été généré, vous pouvez utiliser la molette de la souris pour zoomer dans le diagramme. De plus, la fonctionnalité panorama est activée pour naviguer dans le diagramme. Vous pouvez zoomer jusqu’à un certain niveau de détails puis utiliser le panorama pour vous rendre sur la zone qui vous intéresse. Cliquer sur un point ouvre une boîte de dialogue qui affiche les données de l’enregistrement représenté par le point. Vous pouvez éditer ces valeurs si nécessaire et cliquer sur Soumettre pour créer une requête de mise à jour. Des instructions basiques sur la façon d’utiliser cette fonctionnalité peuvent être affichées en cliquant sur le lien « Comment utiliser ? » situé au-dessus du diagramme.

6.33 Lors de la navigation dans une table, comment puis-je copier un nom de colonne ?

Sélectionner le nom d’une colonne dans la cellule d’en-tête de table pour le copier est difficile, car les colonnes peuvent être ordonnées en déplaçant les cellules d’en-têtes ou en cliquant sur le nom de la colonne qui est un lien. Pour copier un nom de colonne, faites un double clic dans une zone vide à côté du nom de la colonne quand une infobulle vous le propose. Cela affichera une boîte de saisie avec le nom de la colonne. Vous pourrez alors copier dans le presse-papiers le nom de la colonne à partir de cette boîte.

6.34 Comment utiliser la fonctionnalité de Tables préférées ?

La fonctionnalité de Tables préférées est très semblable à celle des Tables récentes. Elle permet d’ajouter un raccourci pour les tables les plus fréquemment utilisées de n’importe quelle base de données dans le panneau de navigation. Vous pouvez naviguer facilement dans n’importe quelle table en cliquant simplement sur celle-ci dans la liste. Ces tables sont stockées dans le stockage local de votre navigateur si vous n’avez pas configuré le Stockage de configuration de phpMyAdmin. Sinon, ces entrées sont stockées dans Stockage de configuration de phpMyAdmin.

IMPORTANT : En l’absence de Stockage de configuration de phpMyAdmin, la liste des tables préférées peut varier en fonction du navigateur et de l’ordinateur que vous utilisez.

Pour ajouter une table à la liste, cliquer sur l’étoile grise située devant le nom de la table dans la liste des tables d’une base de données. Celle-ci deviendra alors jaune. Pour supprimer une table de la liste, cliquer sur l’étoile jaune qui deviendra alors grise.

En utilisant $cfg['NumFavoriteTables'] dans votre fichier config.inc.php, vous pourrez définir le nombre maximum de tables affichées dans le panneau de navigation. La valeur par défaut est 10.

6.35 Comment puis-je utiliser la fonctionnalité de recherche en intervalles ?

À l’aide de la fonctionnalité de recherche en intervalle, vous pouvez indiquer un ensemble de valeurs pour une (des) colonne(s) particulière(s) lors d’une recherche sur une table à partir de l’onglet « Recherche ».

Pour utiliser cette fonctionnalité, cliquer sur les opérateurs BETWEEN ou NOT BETWEEN dans la liste des opérateurs devant le nom de la colonne. En choisissant une des options ci-dessus, une boîte de dialogue s’ouvrira demandant la valeur minimale et maximale pour cette colonne. Seules les valeurs de cet intervalle seront incluses dans le résultat dans le cas de l’opérateur BETWEEN ou exclues dans le cas de l’opérateur NOT BETWEEN.

Note : La fonctionnalité de recherche en intervalle ne fonctionnera que sur des colonnes de type Numeric ou Date.

6.36 Que sont les colonnes centrales et comment utiliser cette fonctionnalité ?

Comme le suggère son nom, la fonctionnalité de colonnes centrales active la maintenance d’une liste centrale de colonnes par base de données pour éviter des noms similaires pour les mêmes éléments de données et apporte de la cohérence au type de données pour les mêmes éléments de données. Vous pouvez utiliser cette liste centralisée pour ajouter un élément à n’importe quelle structure de table dans cette base de données ce qui vous épargnera de saisir des noms de colonnes ou des définitions de colonnes similaires.

Pour ajouter une colonne à la liste centralisée, rendez-vous sur la page de structure de table, cochez les colonnes que vous voulez inclure et cliquez sur « Ajouter aux colonnes centrales ». Si vous voulez ajouter toutes les colonnes uniques à partir de plus d’une table, rendez-vous sur la page de structure de base de données, cochez les tables que vous voulez inclure, puis sélectionnez « Ajouter les colonnes à la liste centrale ».

Pour supprimer une colonne de la liste centralisée, rendez-vous sur la page de structure de table, cochez les colonnes que vous voulez retirer, puis cliquez sur « Supprimer des colonnes centrales ». Si vous voulez retirer toutes les colonnes de plus d’une table, rendez-vous sur la page structure de base de données, cochez les tables que vous voulez inclure, puis sélectionner « Supprimer les colonnes de la liste centralisée ».

Pour afficher et gérer la liste centralisée, sélectionnez la base de données pour laquelle vous voulez gérer les colonnes centrales, puis, à partir du menu supérieur, cliquez sur « Colonnes centrales ». Vous serez alors dirigé vers une page où vous pourrez modifier, supprimer ou ajouter de nouvelles colonnes.

6.37 Comment puis-je utiliser la fonctionnalité Améliorer la structure de table ?

La fonctionnalité Améliorer la structure de table aide à transformer la structure en troisième forme normale. Un assistant est présenté à l’utilisateur et pose des questions sur les éléments dans plusieurs étapes pour la normalisation, et une nouvelle structure est proposée pour transformer la table en première, deuxième ou troisième forme normale. Au démarrage, l’assistant demande à l’utilisateur jusqu’à quel niveau de forme normale il veut normaliser sa table.

Voici un exemple de table que vous pouvez utiliser pour tester les trois formes normales.

CREATE TABLE `VetOffice` (
 `petName` varchar(64) NOT NULL,
 `petBreed` varchar(64) NOT NULL,
 `petType` varchar(64) NOT NULL,
 `petDOB` date NOT NULL,
 `ownerLastName` varchar(64) NOT NULL,
 `ownerFirstName` varchar(64) NOT NULL,
 `ownerPhone1` int(12) NOT NULL,
 `ownerPhone2` int(12) NOT NULL,
 `ownerEmail` varchar(64) NOT NULL,
);

La table ci-dessus n’est pas en première forme normale car il n’y a pas de primary key. La clé primaire est supposée être (petName,`ownerLastName`,`ownerFirstName`). Si la primary key est choisie comme suggéré, la table résultante ne sera pas en deuxième ni en troisième forme normale car les dépendances suivantes existent.

(OwnerLastName, OwnerFirstName) -> OwnerEmail
(OwnerLastName, OwnerFirstName) -> OwnerPhone
PetBreed -> PetType

C’est-à-dire : OwnerEmail dépend de OwnerLastName et OwnerFirstName. OwnerPhone dépend de OwnerLastName et OwnerFirstName. PetType dépend de PetBreed.

6.38 Comment puis-je réaffecter les valeurs auto-incrémentées ?

Certains utilisateurs préfèrent que leurs valeurs AUTO_INCREMENT soient consécutives ; ce n’est pas toujours le cas après la suppression de lignes.

Voici les étapes pour y parvenir. Ce sont des étapes manuelles parce qu’elles comportent une vérification manuelle à un moment donné.

  • Vérifiez que vous disposez d’un accès exclusif à la table devant être réorganisée
  • Sur votre colonne de primary key par exemple id), supprimez le paramètre AUTO_INCREMENT
  • Supprimer votre clé primaire dans Structure > index
  • Créer une nouvelle colonne future_id comme clé primaire, AUTO_INCREMENT
  • Parcourez votre table et vérifiez que les nouveaux incréments correspondent à votre attente
  • Supprimez votre ancienne colonne id
  • Renommez la colonne future_id en id
  • Déplacer la nouvelle colonne id via Structure > Déplacer des colonnes

6.39 Quelle est l’option « Ajuster les privilèges » présente dans les dialogues de renommage, de copie ou de déplacement de base de données, de table, de colonne ou de procédure ?

Lors du renommage, de la copie ou du déplacement d’une base de données, d’une table, d’une colonne ou d’une procédure, MySQL n’ajuste pas par lui-même les privilèges originaux relatifs à ces objets. En choisissant cette option, phpMyAdmin effectuera un ajustement des privilèges afin que les utilisateurs obtiennent les mêmes privilèges sur les nouveaux éléments.

Par exemple : un utilisateur “bob”@”localhost a un privilège « SELECT » sur une colonne nommée « id ». Maintenant, si cette colonne est renommée en « id_new » , MySQL, par lui-même, n’ajusterait pas les privilèges de colonne vers le nouveau nom de colonne. phpMyAdmin peut faire cet ajustement pour vous automatiquement.

Notes :

  • Lors de l’ajustement des privilèges pour une base de données, les privilèges de tous les éléments liés à la base de données (tables, colonnes et procédures) sont également ajustés au nouveau nom de la base de données.
  • De même, tout en ajustant les privilèges d’une table, les privilèges de toutes les colonnes à l’intérieur de la nouvelle table sont également ajustés.
  • Lors de l’ajustement des privilèges, l’utilisateur qui effectue l’opération ** doit ** posséder les privilèges suivants :
    • Les privilèges SELECT, INSERT, UPDATE, DELETE sur les tables suivantes : mysql.`db`, mysql.`columns_priv`, mysql.`tables_priv`, mysql.`procs_priv`
    • Privilège FLUSH (GLOBAL)

Ainsi, si vous voulez répliquer la base de données/table/colonne/procédure telle quelle pendant le renommage/la copie/le déplacement de ces objets, assurez-vous que vous avez activé cette option.

6.40 Je vois la case à cocher « Lier les paramètres » dans la page « SQL ». Comment puis-je écrire des requêtes SQL paramétrées ?

Depuis la version 4.5, phpMyAdmin permet aux utilisateurs d’exécuter des requêtes paramétrées dans la page « SQL ». Les paramètres doivent être préfixés d’un deux-points (:), et lorsque la case « Lier les paramètres » est cochée, ces paramètres seront identifiés et des champs de saisie pour ces paramètres seront présentés. Les valeurs entrées dans ces champs seront substituées dans la requête avant son exécution.

6.41 Je reçois des erreurs d’importation lors de l’importation des dumps exportées depuis les anciennes versions de MySQL (antérieures à 5.7.6) vers les nouvelles versions de MySQL (5.7.7+), mais elles fonctionnent correctement lorsqu’elles sont importées sur les mêmes anciennes versions ?

Si vous avez des erreurs comme #1031 - Le moteur de table de table pour “table_name” n’a pas cette option lors de l’importation des dumps exportées depuis les serveurs MySQL pré-5.7.7 vers les nouvelles versions du serveur MySQL 5.7.7+, c’est peut-être parce que ROW_FORMAT=FIXED n’est pas pris en charge avec les tables InnoDB. De plus, la valeur de innodb_strict_mode définirait si cela serait signalé comme un avertissement ou comme une erreur.

Depuis MySQL version 5.7.9, la valeur par défaut de innodb_strict_mode est` ON` et génère donc une erreur lorsqu’une instruction CREATE TABLE ou ALTER TABLE est rencontrée.

Il existe deux façons de prévenir ces erreurs lors de l’importation :

  • Changez la valeur de innodb_strict_mode sur` OFF` avant de lancer l’importation et activez-la ON une fois l’importation terminée avec succès.
  • Cela peut être réalisé de deux façons :
    • Allez à la page “Variables” et modifiez la valeur de innodb_strict_mode
    • Exécuter la requête : SET GLOBAL `innodb_strict_mode = “[value]”`

Une fois l’importation terminée, il est suggéré que la valeur de innodb_strict_mode soit réinitialisée à la valeur d’origine.

Projet phpMyAdmin

7.1 J’ai trouvé un bogue. Comment dois-je en informer les développeurs ?

Notre logiciel de suivi de problèmes est situé sur <https://github.com/phpmyadmin/phpmyadmin/issues>. Pour des problèmes de sécurité, veuillez suivre les instructions sur <https://www.phpmyadmin.net/security> pour envoyer un courriel directement aux développeurs.

7.2 Je veux traduire les messages dans une nouvelle langue ou mettre à jour une langue existante, où dois-je commencer ?

Les traductions sont les bienvenues et tout ce dont vous avez besoin est de maîtriser la langue. La manière la plus facile est d’utiliser notre <https://hosted.weblate.org/projects/phpmyadmin/>`_. Vous pouvez consulter toutes les possibilités de traduction dans la section traduction de notre site Web.

7.3 Je voudrais aider au développement de phpMyAdmin. Comment dois-je procéder ?

Nous accueillons volontiers toute contribution au développement de phpMyAdmin. Vous pouvez consulter toutes les possibilités pour contribuer dans la section contribuer de notre site Web.

Sécurité

8.1 Où puis-je obtenir des informations sur les alertes de sécurité pour phpMyAdmin ?

Veuillez consulter <https://www.phpmyadmin.net/security/>.

8.2 Comment protéger phpMyAdmin contre les attaques par force brute ?

Si vous utilisez un serveur Web Apache, phpMyAdmin exporte les informations sur l’authentification vers l’environnement Apache et peut être utilisé dans les logs d’Apache. Il y a actuellement deux variables disponibles :

userID
Le nom de l’utilisateur actif en cours (ils n’ont pas besoin d’être connectés).
userStatus
L’état de l’utilisateur actif en cours, soit ok (l’utilisateur est connecté), soit mysql-denied (MySQL a refusé la connexion de l’utilisateur), soit allow-denied (l’utilisateur a été rejeté par les règles allow/deny), soit root-denied (root est refusé dans la configuration), soit empty-denied (les mots de passe vides sont interdits).

La directive LogFormat pour Apache peut ressembler à ce qui suit :

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n"   pma_combined

Vous pouvez alors utiliser n’importe quel outil d’analyse de logs pour détecter des tentatives d’intrusion.

8.3 Pourquoi le chemin d’accès au fichier est-il affiché lors du téléchargement de certains fichiers ?

Ceci est dû à un problème de configuration du serveur. Ne jamais activer display_errors sur un site de production.

8.4 Les fichiers CSV exportés à partir de phpMyAdmin pourraient permettre une attaque par injection de formule.

Il est possible de générer un fichier CSV qui, lorsqu’il est importé dans un programme de tableur comme Microsoft Excel, pourrait potentiellement permettre l’exécution de commandes arbitraires.

Les fichiers CSV générés par phpMyAdmin pourraient potentiellement contenir du texte qui serait interprété par un programme de traitement de texte comme une formule, mais nous ne pensons pas que d’échapper ces champs soient une solution correcte. Il n’existe aucun moyen d’échapper correctement ces champs et de différencier du texte légitime d’une formule qui devrait être échappée, et CSV est un format de texte ou les définitions de fonctions ne devraient pas être interprétées de toutes façons. Nous en avons longuement discuté et il nous semble qu’il est de la responsabilité du programme de tableur d’analyser et d’assainir correctement ce type de données.

Google a un point de vue similaire.

Synchronisation

9.1 (retiré).

9.2 (retiré).

Informations pour les développeurs

phpMyAdmin est un logiciel Open Source, aussi vous êtes invités à y contribuer. Beaucoup de fonctionnalités ont été écrites par d’autres personnes et vous aussi vous pouvez aider à faire de phpMyAdmin un outil utile.

Vous pouvez consulter toutes les possibilités pour contribuer dans la section contribuer de notre site Web.

Politique de sécurité

L’équipe de développement de phpMyAdmin a beaucoup travaillé pour rendre phpMyAdmin aussi sûr que possible. Mais une application Web comme phpMyAdmin peut toujours être vulnérable à une attaque et de nouvelles façons d’attaquer sont continuellement inventées.

Pour chaque vulnérabilité rapportée, une annonce de sécurité phpMyAdmin Security Announcement (PMASA) est établie et pour laquelle est assignée un ID CVE. Plusieurs vulnérabilités similaires peuvent être regroupées dans un seul PMASA (par ex. plusieurs vulnérabilités XSS peuvent être annoncées sous un seul PMASA).

En cas de découverte d’une vulnérabilité, merci de consulter Rapporter des problèmes de sécurité.

Vulnérabilité typique

Dans cette section seront décrites les vulnérabilités typiques qui peuvent survenir dans le code source. Cette liste n’est pas exhaustive, elle a pour but de montrer la surface d’attaque typique.

Cross-site scripting (XSS)

Quand phpMyAdmin affiche des données utilisateurs, par ex. provenant d’une base de données utilisateur, tous les caractères spéciaux HTML doivent être échappés. Sinon un utilisateur malicieux pourrait remplir la base avec du contenu spécial pour tromper un autre utilisateur de cette même base et exécuter du code arbitraire. Par ex. du JavaScript qui pourrait faire à peu près n’importe quoi.

phpMyAdmin essaie d’échapper toutes les données utilisateur avant qu’elles soient affichées en HTML dans le navigateur.

Cross-site request forgery (CSRF)

Un attaquant pourrait tromper un utilisateur de phpMyAdmin qui cliquerait sur un lien pour provoquer une action dans phpMyAdmin. Ce lien pourrait être envoyé par courriel ou un site quelconque. En cas de succès, cet attaquant pourrait effectuer des actions avec les privilèges utilisateur.

Pour limiter ce problème, phpMyAdmin requiert d’envoyer un jeton sur les sites sensibles. L’idée est qu’un attaquant ne possède pas le jeton actuellement valide pour l’inclure dans le lien présenté.

Le jeton est régénéré à chaque connexion, ce qui fait qu’il n’est généralement valide qu’un temps limité et le rend difficile à obtenir par un attaquant.

Injection SQL

Comme le but de phpMyAdmin est d’effectuer des requêtes SQL, ceci ne le concerne pas principalement. L’injection SQL concerne phpMyAdmin à la connexion de contrôle MySQL. Cette connexion de contrôle peut avoir des privilèges supplémentaires que l’utilisateur connecté ne possède pas. Par ex. pour accéder aux Stockage de la configuration de phpMyAdmin.

Les données utilisateur qui sont incluses dans les requêtes (administratives) devraient toujours être exécutées à travers DatabaseInterface::escapeString().

Attaque par force brute

phpMyAdmin ne limite pas le nombre d’essais pour l’authentification parce que phpMyAdmin fonctionne en mode sans état (stateless) pour lequel il n’existe aucune manière de protéger contre ce type de choses.

Pour limiter ceci, il est possible d’utiliser un Captcha ou des outils externes comme fail2ban. Plus de détails sont fournis à Sécuriser votre installation de phpMyAdmin.

Rapporter des problèmes de sécurité

En cas de découverte d’un problème de sécurité dans le code de phpMyAdmin, merci de contacter l’équipe de sécurité de phpMyAdmin avant de le rendre public. Une correction pourra être préparée et rendue publique avec votre annonce. Vous serez aussi crédité dans notre bulletin de sécurité. Votre rapport de sécurité peut être optionnellement chiffré avec l’ID de clé PGP DA68AB39218AB947 et l’empreinte suivante :

pub   4096R/DA68AB39218AB947 2016-08-02
      Key fingerprint = 5BAD 38CF B980 50B9 4BD7  FB5B DA68 AB39 218A B947
uid                          phpMyAdmin Security Team <security@phpmyadmin.net>
sub   4096R/5E4176FB497A31F7 2016-08-02

La clé peut soit être obtenue du serveur de clés soit est disponible dans le magasin de clés de phpMyAdmin sur le serveur de téléchargement soit en utilisant Keybase.

En cas de suggestion pour améliorer la sécurité de phpMyAdmin, merci de soumettre un rapport au gestionnaire de problèmes à. Les suggestions d’améliorations existantes se trouvent sous le libellé « hardening » à.

Distribuer et packager phpMyAdmin

Ce document est destiné à donner des morceaux de conseil aux personnes qui veulent redistribuer phpMyAdmin dans d’autres paquets logiciels telle qu’une distribution Linux ou des paquets tout en un contenant un serveur Web et un serveur MySQL.

Généralement, vous pouvez personnaliser certains aspects basiques (chemins d’accès vers certains fichiers et comportement) dans libraries/vendor_config.php.

Par exemple, si vous voulez paramétrer un script pour générer un fichier de config dans var, modifier SETUP_CONFIG_FILE en /var/lib/phpmyadmin/config.inc.php et vous voudrez aussi probablement passer outre la vérification de répertoire accessible en écriture en paramétrant SETUP_DIR_WRITABLE à « false ».

Bibliothèques externes

phpMyAdmin inclut plusieurs bibliothèques externes, vous pourriez vouloir les remplacer par celles du système si elles sont disponibles, mais veuillez noter que vous devrez tester si la version que vous fournissez sont compatibles avec celles que nous distribuons.

Liste actuelle des bibliothèques externes :

js/vendor
Les bibliothèques du framework Javascript jQuery et diverses bibliothèques.
vendor/
Le kit de téléchargement contient divers paquets de dépendances de Composer.

Licences de fichiers spécifiques

Les thèmes distribués dans phpMyAdmin contiennent du contenu sous licence.

CC BY 4.0 ou GPL

Licences pour les fournisseurs

Crédits

Crédits, par ordre chronologique

  • Tobias Ratschiller <tobias_at_ratschiller.com>
    • créateur du projet phpMyAdmin
    • mainteneur de 1998 à l’été 2000
  • Marc Delisle <marc_at_infomarc.info>
    • version multilingue de décembre 1998
    • diverses corrections et améliorations
    • première version de l’analyseur SQL (la plupart)
    • mainteneur de 2001 à 2015
  • Olivier Müller <om_at_omnis.ch>
    • a démarré le projet sur Sourceforge en mars 2001
    • a synchronisé différents dépôts CVS avec de nouvelles fonctionnalités et corrections de bogues
    • améliorations du système multilingue, sélection dynamique de la langue
    • beaucoup de corrections de bogues et d’améliorations
  • Loïc Chapeaux <lolo_at_phpheaven.net>
    • ré-écriture et optimisation JavaScript, DHTML et DOM
    • ré-écriture des scripts PEAR pour s’adapter aux standards de codage et génération de codes conformes XHTML1.0 et CSS2
    • amélioration du système de détection de langue
    • beaucoup de corrections de bogues et d’améliorations
  • Robin Johnson <robbat2_at_users.sourceforge.net>
    • contrôles de maintenance de la base de données
    • code pour le type de table
    • authentification hôte IP Allow/Deny
    • configuration en base de données (non terminée)
    • analyseur SQL et impression élégante
    • validateur SQL
    • beaucoup de corrections de bogues et d’améliorations
  • Armel Fauveau <armel.fauveau_at_globalis-ms.com>
    • fonctionnalité des signets
    • fonctionnalité de listage multiple
    • fonctionnalité de listage GZip
    • fonctionnalité de listage Zip
  • Geert Lund <glund_at_silversoft.dk>
    • diverses corrections
    • modérateur du précédent forum utilisateurs de phpMyAdmin sur phpwizard.net
  • Korakot Chaovavanich <korakot_at_iname.com>
    • fonctionnalité « insérer comme une nouvelle ligne »
  • Pete Kelly <webmaster_at_trafficg.com>
    • ré-écriture et correction du code de listage
    • corrections de bogue
  • Steve Alberty <alberty_at_neptunlabs.de>
    • ré-écriture du code de listage pour PHP4
    • statistiques sur les tables MySQL
    • corrections de bogue
  • Benjamin Gandon <gandon_at_isia.cma.fr>
    • auteur principal de la version 2.1.0.1
    • corrections de bogue
  • Alexander M. Turek <me_at_derrabus.de>
    • compatibilité MySQL 4.0 / 4.1 / 5.0
    • interface d’abstraction de base de données (PMA_DBI) avec support MySQLi
    • administration des privilèges
    • exportations XML
    • diverses fonctionnalités et corrections
    • mises à jour du fichier de langue allemand
  • Mike Beck <mike.beck_at_web.de>
    • jointures automatiques dans QBE
    • mise en lien des colonnes dans printview
    • Vue relationnelle
  • Michal Čihař <michal_at_cihar.com>
    • fonctionnalité de création et d’affichage améliorés d’index
    • fonctionnalité pour utiliser un jeu de caractères différent de celui de MySQL pour l’HTML
    • améliorations de la fonctionnalité d’export
    • diverses fonctionnalités et corrections
    • mises à jour du fichier de langue tchèque
    • a créé le site Web actuel pour phpMyAdmin
  • Christophe Gesché pour « MySQL Form Generator for PHPMyAdmin » (https://sourceforge.net/projects/phpmysqlformgen/)
    • a suggéré le correctif pour l’affichage de table multiple
  • Garvin Hicking <me_at_supergarv.de>
    • correctif pour l’affichage vertical des lignes de table
    • fenêtre de requête JavaScript + historique SQL
    • améliorations des commentaires de colonnes et de bases de données
    • transformations MIME pour les colonnes
    • utilisation d’alias personnalisés pour les bases de données dans le cadre de gauche
    • affichage des tables hiérarchiques/imbriquées
    • panneau PDF pour la distribution WYSIWYG des relations PDF
    • nouveau jeu d’icônes
    • affichage vertical de la colonne propriétés de la page
    • corrections de bogues, fonctionnalités, assistance, ajout pour l’allemand
  • Yukihiro Kawada <kawada_at_den.fujifilm.co.jp>
    • fonctionnalité de conversion d’encodage kanji japonais
  • Piotr Roszatycki <d3xter_at_users.sourceforge.net> et Dan Wilson
    • Mode d’authentification « cookie »
  • Axel Sander <n8falke_at_users.sourceforge.net>
    • fonctionnalité relations-liens de table
  • Maxime Delorme <delorme.maxime_at_free.fr>
    • sortie de schéma PDF, merci aussi à Olivier Plathey pour la bibliothèque « FPDF » (voir <http://www.fpdf.org/>), Steven Wittens pour la bibliothèque « UFPDF » et Nicola Asuni pour la bibliothèque « TCPDF » (voir <https://tcpdf.org/>).
  • Olof Edlund <olof.edlund_at_upright.se>
    • serveur validateur SQL
  • Ivan R. Lanin <ivanlanin_at_users.sourceforge.net>
    • logo phpMyAdmin (jusqu’à juin 2004)
  • Mike Cochrane <mike_at_graftonhall.co.nz>
    • bibliothèque Blowfish du projet Horde (retiré dans la version 4.0)
  • Marcel Tschopp <ne0x_at_users.sourceforge.net>
    • support MySQLi
    • beaucoup de corrections de bogues et d’améliorations
  • Nicola Asuni (Tecnick.com)
  • Michael Keck <mkkeck_at_users.sourceforge.net>
    • re-conception pour la version 2.6.0
    • logo bateau à voile de phpMyAdmin (juin 2004)
  • Mathias Landhäußer
    • représentation à des conférences
  • Sebastian Mendel <cybot_tm_at_users.sourceforge.net>
    • améliorations de l’interface
    • diverses corrections de bogues
  • Ivan A Kirillov
    • nouveau Concepteur de relations
  • Raj Kissu Rajandran (Google Summer of Code 2008)
    • support BLOBstreaming (retiré dans la version 4.0)
  • Piotr Przybylski (Google Summer of Code 2008, 2010 et 2011)
    • amélioration du script d’installation
    • préférences utilisateur
    • Support Drizzle
  • Derek Schaefer (Google Summer of Code 2009)
    • amélioration du système d’import
  • Alexander Rutkowski (Google Summer of Code 2009)
    • Mécanisme de suivi
  • Zahra Naeem (Google Summer of Code 2009)
    • Fonctionnalité de synchronisation (retiré dans la version 4.0)
  • Tomáš Srnka (Google Summer of Code 2009)
    • Gestion de la réplication
  • Muhammad Adnan (Google Summer of Code 2010)
    • Export de schémas relationnels sous plusieurs formats
  • Lori Lee (Google Summer of Code 2010)
    • améliorations de l’interface utilisateur
    • Éditeur ENUM/SET
    • Interface simplifiée pour l’export/import
  • Ninad Pundalik (Google Summer of Code 2010)
    • AJAXification de l’interface
  • Martynas Mickevičius (Google Summer of Code 2010)
    • Tableaux
  • Barrie Leslie
    • support BLOBstreaming avec l’extension PBMS PHP (retiré dans la version 4.0)
  • Ankit Gupta (Google Summer of Code 2010)
    • Constructeur visuel de requête
  • Madhura Jayaratne (Google Summer of Code 2011)
    • support OpenGIS
  • Ammar Yasir (Google Summer of Code 2011)
    • Recherche par zoom
  • Aris Feryanto (Google Summer of Code 2011)
    • Améliorations du mode Browse
  • Thilanka Kaushalya (Google Summer of Code 2011)
    • AJAXification
  • Tyron Madlener (Google Summer of Code 2011)
    • Statistiques et graphiques de requête pour la page d’état
  • Zarubin Stas (Google Summer of Code 2011)
    • Test automatisé
  • Rouslan Placella (Google Summer of Code 2011 et 2012)
    • Support amélioré pour les routines stockées, les déclencheurs et les événements
    • mises à jour de la traduction italienne
    • Retrait des frames, nouvelle navigation
  • Dieter Adriaenssens
    • diverses corrections de bogues
    • mises à jour de la traduction néerlandaise
  • Alex Marin (Google Summer of Code 2012)
    • Nouveaux plugins et système des propriétés
  • Thilina Buddika Abeyrathna (Google Summer of Code 2012)
    • Refactorisation
  • Atul Pratap Singh (Google Summer of Code 2012)
    • Refactorisation
  • Chanaka Indrajith (Google Summer of Code 2012)
    • Refactorisation
  • Yasitha Pandithawatta (Google Summer of Code 2012)
    • Test automatisé
  • Jim Wigginton (phpseclib.sourceforge.net)
    • phpseclib
  • Bin Zu (Google Summer of Code 2013)
    • Refactorisation
  • Supun Nakandala (Google Summer of Code 2013)
    • Refactorisation
  • Mohamed Ashraf (Google Summer of Code 2013)
    • Rapport d’erreur AJAX
  • Adam Kang (Google Summer of Code 2013)
    • Test automatisé
  • Ayush Chaudhary (Google Summer of Code 2013)
    • Test automatisé
  • Kasun Chathuranga (Google Summer of Code 2013)
    • Améliorations de l’interface
  • Hugues Peccatte
    • Enregistrement et chargement de Query by example (marque-pages de recherche de base de données)
  • Smita Kumari (Google Summer of Code 2014)
    • Liste centralisée des colonnes
    • Améliorer la structure de table (normalisation)
  • Ashutosh Dhundhara (Google Summer of Code 2014)
    • Améliorations de l’interface
  • Chanaka Indrajith (Google Summer of Code 2012)
    • Rapport d’erreur PHP
  • Adam Kang (Google Summer of Code 2013)
    • Console de requête SQL
  • Kankanamge Bimal Yashodha (Google Summer of Code 2014)
    • Remaniement : Intégration du Concepteur/schéma
  • Chirayu Chiripal (Google Summer of Code 2014)
    • Gestionnaires de champ personnalisé (transformations MIME des saisies)
    • Exporter avec changements de nom de table/colonne
  • Dan Ungureanu (Google Summer of Code 2015)
    • Nouvel analyseur syntaxique
  • Nisarg Jhaveri (Google Summer of Code 2015)
    • Paramètres relatifs à la page
    • Intégration à la Console du débogage SQL
    • Autres améliorations de l’interface
  • Deven Bansod (Google Summer of Code 2015)
    • Version imprimable (CSS)
    • Autres améliorations de l’interface et nouvelles fonctionnalités
  • Deven Bansod (Google Summer of Code 2017)
    • Améliorations du serveur de rapport d’erreurs
    • Testage de Selenium amélioré
  • Manish Bisht (Google Summer of Code 2017)
    • Interface utilisateur mobile
    • Supprimer le code JavaScript en ligne
    • Autres améliorations de l’interface
  • Raghuram Vadapalli (Google Summer of Code 2017)
    • Interface de demande multi-tables
    • Permet au concepteur de travailler avec des tables provenant d’autres bases de données
    • Autres améliorations de l’interface
  • Maurício Meneghini Fauth
    • Améliorations majeures et mise à jour dans le cœur JavaScript
    • Modernisation des fonctionnalités des bibliothèques JavaScript
    • Modernisation des gabarits et introduction de Twig
  • William Desportes
    • Améliorations du style de codage basé sur PHPStan
    • Amélioration des liens vers la documentation externe de MySQL et de MariaDB
    • De nombreuses autres corrections de bogues
  • Emanuel Bronshtein
    • Évaluation complète de la sécurité et suggestions
  • Lakshya Arora (Google Summer of Code 2018)
    • Diverses améliorations incluant :
      • Intégration des préférences utilisateur avec le stockage local
      • Utilisation d’une connexion modale après l’expiration de la session
      • Ajout de la prise en charge de CHECK CONSTRAINTS
      • et plus encore !
  • Saksham Gupta (Google Summer of Code 2018)
    • Outil de génération automatique de thèmes
  • Leonardo Strozzi (Google Summer of Code 2018)
    • Refonte des gabarits Twig et autres améliorations du code interne
  • Piyush Vijay (Google Summer of Code 2018)
    • Modernisation du code JavaScript, y compris en introduisant Webpack, Babel et Yarn, ainsi que eslint et Jsdoc

et aussi les personnes qui ont contribué à des changements, améliorations, corrections de bogues ou support d’une nouvelles langues, mineurs, depuis la version 2.1.0 :

Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita, Péter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow, Mats Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kläger, Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg, Andreas Pauley, Bernard M. Piller, Laurent Haas, « Sakamoto », Yuval Sarna, www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun, Peter Svec, Michael Tacelosky, Rachim Tamsjadi, Kositer Uros, Luís V., Martijn W. van der Lee, Algis Vainauskas, Daniel Villanueva, Vinay, Ignacio Vazquez-Abrams, Chee Wai, Jakub Wilk, Thomas Michael Winningham, Vilius Zigmantas, « Manuzhai ».

Traducteurs

Les personnes suivantes ont contribué à la traduction de phpMyAdmin :

  • Albanais

    • Arben Çokaj <acokaj_at_shkoder.net>
  • Arabe

    • Ahmed Saleh Abd El-Raouf Ismae <a.saleh.ismael_at_gmail.com>
    • Ahmed Saad <egbrave_at_hotmail.com>
    • hassan mokhtari <persiste1_at_gmail.com>
  • Arménien

    • Andrey Aleksanyants <aaleksanyants_at_yahoo.com>
  • Azéri

    • Mircəlal <01youknowme_at_gmail.com>
    • Huseyn <huseyn_esgerov_at_mail.ru>
    • Sevdimali İsa <sevdimaliisayev_at_mail.ru>
    • Jafar <sharifov_at_programmer.net>
  • Biélorusse

    • Viktar Palstsiuk <vipals_at_gmail.com>
  • Bulgare

    • Boyan Kehayov <bkehayov_at_gmail.com>
    • Valter Georgiev <blagynchy_at_gmail.com>
    • Valentin Mladenov <hudsonvsm_at_gmail.com>
    • P <plamen_mbx_at_yahoo.com>
    • krasimir <vip_at_krasio-valia.com>
  • Catalan

    • josep constanti <jconstanti_at_yahoo.es>
    • Xavier Navarro <xvnavarro_at_gmail.com>
  • Chinois (Chine)

    • Vincent Lau <3092849_at_qq.com>
    • Zheng Dan <clanboy_at_163.com>
    • disorderman <disorderman_at_qq.com>
    • Rex Lee <duguying2008_at_gmail.com>
    • <fundawang_at_gmail.com>
    • popcorner <memoword_at_163.com>
    • Yizhou Qiang <qyz.yswy_at_hotmail.com>
    • zz <tczzjin_at_gmail.com>
    • Terry Weng <wengshiyu_at_gmail.com>
    • whh <whhlcj_at_126.com>
  • Chinois (Taïwan)

    • Albert Song <albb0920_at_gmail.com>
    • Chien Wei Lin <cwlin0416_at_gmail.com>
    • Peter Dave Hello <xs910203_at_gmail.com>
  • Kölsch

    • Purodha <publi_at_web.de>
  • Tchèque

    • Aleš Hakl <ales_at_hakl.net>
    • Dalibor Straka <dalibor.straka3_at_gmail.com>
    • Martin Vidner <martin_at_vidner.net>
    • Ondra Šimeček <ondrasek.simecek_at_gmail.com>
    • Jan Palider <palider_at_seznam.cz>
    • Petr Kateřiňák <petr.katerinak_at_gmail.com>
  • Danois

    • Aputsiaĸ Niels Janussen <aj_at_isit.gl>
    • Dennis Jakobsen <dennis.jakobsen_at_gmail.com>
    • Jonas <jonas.den.smarte_at_gmail.com>
    • Claus Svalekjaer <just.my.smtp.server_at_gmail.com>
  • Néerlandais

      1. Voogt <a.voogt_at_hccnet.nl>
    • dingo thirteen <dingo13_at_gmail.com>
    • Robin van der Vliet <info_at_robinvandervliet.nl>
    • Dieter Adriaenssens <ruleant_at_users.sourceforge.net>
    • Niko Strijbol <strijbol.niko_at_gmail.com>
  • Anglais (Royaume-Uni)

    • Dries Verschuere <dries.verschuere_at_outlook.com>
    • Francisco Rocha <j.francisco.o.rocha_at_zoho.com>
    • Marc Delisle <marc_at_infomarc.info>
    • Marek Tomaštík <tomastik.m_at_gmail.com>
  • Espéranto

    • Eliovir <eliovir_at_gmail.com>
    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • Estonien

    • Kristjan Räts <kristjanrats_at_gmail.com>
  • Finnois

    • Juha Remes <jremes_at_outlook.com>
    • Lari Oesch <lari_at_oesch.me>
  • Français

    • Marc Delisle <marc_at_infomarc.info>
  • Frison

    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • Galicien

    • Xosé Calvo <xosecalvo_at_gmail.com>
  • Allemand

    • Julian Ladisch <github.com-t3if_at_ladisch.de>
    • Jan Erik Zassenhaus <jan.zassenhaus_at_jgerman.de>
    • Lasse Goericke <lasse_at_mydom.de>
    • Matthias Bluthardt <matthias_at_bluthardt.org>
    • Michael Koch <michael.koch_at_enough.de>
    • Ann + J.M. <phpMyAdmin_at_ZweiSteinSoft.de>
    • <pma_at_sebastianmendel.de>
    • Phillip Rohmberger <rohmberger_at_hotmail.de>
    • Hauke Henningsen <sqrt_at_entless.org>
  • Grec

    • Παναγιώτης Παπάζογλου <papaz_p_at_yahoo.com>
  • Hébreu

    • Moshe Harush <mmh15_at_windowslive.com>
    • Yaron Shahrabani <sh.yaron_at_gmail.com>
    • Eyal Visoker <visokereyal_at_gmail.com>
  • Hindi

    • Atul Pratap Singh <atulpratapsingh05_at_gmail.com>
    • Yogeshwar <charanyogeshwar_at_gmail.com>
    • Deven Bansod <devenbansod.bits_at_gmail.com>
    • Kushagra Pandey <kushagra4296_at_gmail.com>
    • Nisarg Jhaveri <nisargjhaveri_at_gmail.com>
    • Roohan Kazi <roohan_cena_at_yahoo.co.in>
    • Yugal Pantola <yug.scorpio_at_gmail.com>
  • Hongrois

    • Akos Eros <erosakos02_at_gmail.com>
    • Dániel Tóth <leedermeister_at_gmail.com>
    • Szász Attila <undernetangel_at_gmail.com>
    • Balázs Úr <urbalazs_at_gmail.com>
  • Indonésien

    • Deky Arifianto <Deky40_at_gmail.com>
    • Andika Triwidada <andika_at_gmail.com>
    • Dadan Setia <da2n_s_at_yahoo.co.id>
    • Dadan Setia <dadan.setia_at_gmail.com>
    • Yohanes Edwin <edwin_at_yohanesedwin.com>
    • Fadhiil Rachman <fadhiilrachman_at_gmail.com>
    • Benny <tarzq28_at_gmail.com>
    • Tommy Surbakti <tommy_at_surbakti.net>
    • Zufar Fathi Suhardi <zufar.bogor_at_gmail.com>
  • Interlingua

    • Giovanni Sora <g.sora_at_tiscali.it>
  • Italien

    • Francesco Saverio Giacobazzi <francesco.giacobazzi_at_ferrania.it>
    • Marco Pozzato <ironpotts_at_gmail.com>
    • Stefano Martinelli <stefano.ste.martinelli_at_gmail.com>
  • Japonais

    • k725 <alexalex.kobayashi_at_gmail.com>
    • Hiroshi Chiyokawa <hiroshi.chiyokawa_at_gmail.com>
    • Masahiko HISAKAWA <orzkun_at_ageage.jp>
    • worldwideskier <worldwideskier_at_yahoo.co.jp>
  • Kannada

    • Robin van der Vliet <info_at_robinvandervliet.nl>
    • Shameem Ahmed A Mulla <shameem.sam_at_gmail.com>
  • Coréen

    • Bumsoo Kim <bskim45_at_gmail.com>
    • Kyeong Su Shin <cdac1234_at_gmail.com>
    • Dongyoung Kim <dckyoung_at_gmail.com>
    • Myung-han Yu <greatymh_at_gmail.com>
    • JongDeok <human.zion_at_gmail.com>
    • Yong Kim <kim_at_nhn.com>
    • 이경준 <kyungjun2_at_gmail.com>
    • Seongki Shin <skshin_at_gmail.com>
    • Yoon Bum-Jong <virusyoon_at_gmail.com>
    • Koo Youngmin <youngminz.kr_at_gmail.com>
  • Kurde Sorani

    • Alan Hilal <alan.hilal94_at_gmail.com>
    • Aso Naderi <aso.naderi_at_gmail.com>
    • muhammad <esy_vb_at_yahoo.com>
    • Zrng Abdulla <zhyarabdulla94_at_gmail.com>
  • Letton

    • Latvian TV <dnighttv_at_gmail.com>
    • Edgars Neimanis <edgarsneims5092_at_inbox.lv>
    • Ukko <perkontevs_at_gmail.com>
  • Limbourgeois

    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • Lituanien

    • Vytautas Motuzas <v.motuzas_at_gmail.com>
  • Malais

    • Amir Hamzah <amir.overlord666_at_gmail.com>
    • diprofinfiniti <anonynuine-999_at_yahoo.com>
  • Népalais

    • Nabin Ghimire <nnabinn_at_hotmail.com>
  • Norvégien, Bokmål

    • Børge Holm-Wennberg <borge947_at_gmail.com>
    • Tor Stokkan <danorse_at_gmail.com>
    • Espen Frøyshov <efroys_at_gmail.com>
    • Kurt Eilertsen <kurt_at_kheds.com>
    • Christoffer Haugom <ph3n1x.nobody_at_gmail.com>
    • Sebastian <sebastian_at_sgundersen.com>
    • Tomas <tomas_at_tomasruud.com>
  • Farsi

    • ashkan shirian <ashkan.shirian_at_gmail.com>
    • HM <goodlinuxuser_at_chmail.ir>
  • Polonais

    • Andrzej <andrzej_at_kynu.pl>
    • Przemo <info_at_opsbielany.waw.pl>
    • Krystian Biesaga <krystian4842_at_gmail.com>
    • Maciej Gryniuk <maciejka45_at_gmail.com>
    • Michał VonFlynee <vonflynee_at_gmail.com>
  • Portugais

    • Alexandre Badalo <alexandre.badalo_at_sapo.pt>
    • João Rodrigues <geral_at_jonilive.com>
    • Pedro Ribeiro <p.m42.ribeiro_at_gmail.com>
    • Sandro Amaral <sandro123iv_at_gmail.com>
  • Portugais (Brésil)

    • Alex Rohleder <alexrohleder96_at_outlook.com>
    • bruno mendax <brunomendax_at_gmail.com>
    • Danilo GUia <danilo.eng_at_globomail.com>
    • Douglas Rafael Morais Kollar <douglas.kollar_at_pg.df.gov.br>
    • Douglas Eccker <douglaseccker_at_hotmail.com>
    • Ed Jr <edjacobjunior_at_gmail.com>
    • Guilherme Souza Silva <g.szsilva_at_gmail.com>
    • Guilherme Seibt <gui_at_webseibt.net>
    • Helder Santana <helder.bs.santana_at_gmail.com>
    • Junior Zancan <jrzancan_at_hotmail.com>
    • Luis <luis.eduardo.braschi_at_outlook.com>
    • Marcos Algeri <malgeri_at_gmail.com>
    • Marc Delisle <marc_at_infomarc.info>
    • Renato Rodrigues de Lima Júnio <renatomdd_at_yahoo.com.br>
    • Thiago Casotti <thiago.casotti_at_uol.com.br>
    • Victor Laureano <victor.laureano_at_gmail.com>
    • Vinícius Araújo <vinipitta_at_gmail.com>
    • Washington Bruno Rodrigues Cav <washingtonbruno_at_msn.com>
    • Yan Gabriel <yansilvagabriel_at_gmail.com>
  • Pendjabi

    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • Roumain

    • Alex <amihaita_at_yahoo.com>
    • Costel Cocerhan <costa1988sv_at_gmail.com>
    • Ion Adrian-Ionut <john_at_panevo.ro>
    • Raul Molnar <molnar.raul_at_wservices.eu>
    • Utilisateur Supprimé <noreply_at_weblate.org>
    • Stefan Murariu <stefan.murariu_at_yahoo.com>
  • Russe

    • Andrey Aleksanyants <aaleksanyants_at_yahoo.com>
    • <ddrmoscow_at_gmail.com>
    • Robin van der Vliet <info_at_robinvandervliet.nl>
    • Хомутов Иван Сергеевич <khomutov.ivan_at_mail.ru>
    • Alexey Rubinov <orion1979_at_yandex.ru>
    • Олег Карпов <salvadoporjc_at_gmail.com>
    • Egorov Artyom <unlucky_at_inbox.ru>
  • Serbe

    • Smart Kid <kidsmart33_at_gmail.com>
  • Cingalais

    • Madhura Jayaratne <madhura.cj_at_gmail.com>
  • Slovaque

    • Martin Lacina <martin_at_whistler.sk>
    • Patrik Kollmann <parkourpotex_at_gmail.com>
    • Jozef Pistej <pistej2_at_gmail.com>
  • Slovène

    • Domen <mitenem_at_outlook.com>
  • Espagnol

    • Daniel Hinostroza, MD <phpmyadmin_at_cerebroperiferico.com>
    • Luis García Sevillano <floss.dev_at_gmail.com>
    • Franco <fulanodetal.github1_at_openaliasbox.org>
    • Luis Ruiz <luisan00_at_hotmail.com>
    • Macofe <macofe.languagetool_at_gmail.com>
    • Matías Bellone <matiasbellone+weblate_at_gmail.com>
    • Rodrigo A. <ra4_at_openmailbox.org>
    • FAMMA TV NOTICIAS MEDIOS DE CO <revistafammatvmusic.oficial_at_gmail.com>
    • Ronnie Simon <ronniesimonf_at_gmail.com>
  • Suédois

    • Anders Jonsson <anders.jonsson_at_norsjovallen.se>
  • Tamoul

    • கணேஷ் குமார் <GANESHTHEONE_at_gmail.com>
    • Achchuthan Yogarajah <achch1990_at_gmail.com>
    • Rifthy Ahmed <rifthy456_at_gmail.com>
  • Tha&iuml;

    • <nontawat39_at_gmail.com>
    • Somthanat W. <somthanat_at_gmail.com>
  • Turc

    • Burak Yavuz <hitowerdigit_at_hotmail.com>
  • Ukrainien

    • Сергій Педько <nitrotoll_at_gmail.com>
    • Igor <vmta_at_yahoo.com>
    • Vitaliy Perekupka <vperekupka_at_gmail.com>
  • Vietnamien

    • Bao Phan <baophan94_at_icloud.com>
    • Xuan Hung <mr.hungdx_at_gmail.com>
    • Bao trinh minh <trinhminhbao_at_gmail.com>
  • Flandre occidentale

    • Robin van der Vliet <info_at_robinvandervliet.nl>

Traducteurs de la documentation

Les personnes suivantes ont contribué à la traduction de la documentation de phpMyAdmin :

  • Albanais

    • Arben Çokaj <acokaj_at_shkoder.net>
  • Arabe

    • Ahmed El Azzabi <ahmedtek1993_at_gmail.com>
    • Omar Essam <omar_2412_at_live.com>
  • Arménien

    • Andrey Aleksanyants <aaleksanyants_at_yahoo.com>
  • Azéri

    • Mircəlal <01youknowme_at_gmail.com>
    • Sevdimali İsa <sevdimaliisayev_at_mail.ru>
  • Catalan

    • josep constanti <jconstanti_at_yahoo.es>
    • Joan Montané <joan_at_montane.cat>
    • Xavier Navarro <xvnavarro_at_gmail.com>
  • Chinois (Chine)

    • Vincent Lau <3092849_at_qq.com>
    • 罗攀登 <6375lpd_at_gmail.com>
    • disorderman <disorderman_at_qq.com>
    • ITXiaoPang <djh1017555_at_126.com>
    • tunnel213 <tunnel213_at_aliyun.com>
    • Terry Weng <wengshiyu_at_gmail.com>
    • whh <whhlcj_at_126.com>
  • Chinois (Taïwan)

    • Chien Wei Lin <cwlin0416_at_gmail.com>
    • Peter Dave Hello <xs910203_at_gmail.com>
  • Tchèque

    • Aleš Hakl <ales_at_hakl.net>
    • Michal Čihař <michal_at_cihar.com>
    • Jan Palider <palider_at_seznam.cz>
    • Petr Kateřiňák <petr.katerinak_at_gmail.com>
  • Danois

    • Aputsiaĸ Niels Janussen <aj_at_isit.gl>
    • Claus Svalekjaer <just.my.smtp.server_at_gmail.com>
  • Néerlandais

      1. Voogt <a.voogt_at_hccnet.nl>
    • dingo thirteen <dingo13_at_gmail.com>
    • Dries Verschuere <dries.verschuere_at_outlook.com>
    • Robin van der Vliet <info_at_robinvandervliet.nl>
    • Stefan Koolen <nast3zz_at_gmail.com>
    • Ray Borggreve <ray_at_datahuis.net>
    • Dieter Adriaenssens <ruleant_at_users.sourceforge.net>
    • Tom Hofman <tom.hofman_at_gmail.com>
  • Estonien

    • Kristjan Räts <kristjanrats_at_gmail.com>
  • Finnois

    • Juha <jremes_at_outlook.com>
  • Français

    • Cédric Corazza <cedric.corazza_at_wanadoo.fr>
    • Étienne Gilli <etienne.gilli_at_gmail.com>
    • Marc Delisle <marc_at_infomarc.info>
    • Donavan_Martin <mart.donavan_at_hotmail.com>
  • Frison

    • Robin van der Vliet <info_at_robinvandervliet.nl>
  • Galicien

    • Xosé Calvo <xosecalvo_at_gmail.com>
  • Allemand

    • Daniel <d.gnauk89_at_googlemail.com>
    • JH M <janhenrikm_at_yahoo.de>
    • Lasse Goericke <lasse_at_mydom.de>
    • Michael Koch <michael.koch_at_enough.de>
    • Ann + J.M. <phpMyAdmin_at_ZweiSteinSoft.de>
    • Niemand Jedermann <predatorix_at_web.de>
    • Phillip Rohmberger <rohmberger_at_hotmail.de>
    • Hauke Henningsen <sqrt_at_entless.org>
  • Grec

    • Παναγιώτης Παπάζογλου <papaz_p_at_yahoo.com>
  • Hongrois

    • Balázs Úr <urbalazs_at_gmail.com>
  • Italien

    • Francesco Saverio Giacobazzi <francesco.giacobazzi_at_ferrania.it>
    • Marco Pozzato <ironpotts_at_gmail.com>
    • Stefano Martinelli <stefano.ste.martinelli_at_gmail.com>
    • TWS <tablettws_at_gmail.com>
  • Japonais

    • Eshin Kunishima <ek_at_luna.miko.im>
    • Hiroshi Chiyokawa <hiroshi.chiyokawa_at_gmail.com>
  • Lituanien

    • Jur Kis <atvejis_at_gmail.com>
    • Dovydas <dovy.buz_at_gmail.com>
  • Norvégien, Bokmål

    • Tor Stokkan <danorse_at_gmail.com>
    • Kurt Eilertsen <kurt_at_kheds.com>
  • Portugais (Brésil)

    • Alexandre Moretti <alemoretti2010_at_hotmail.com>
    • Douglas Rafael Morais Kollar <douglas.kollar_at_pg.df.gov.br>
    • Guilherme Seibt <gui_at_webseibt.net>
    • Helder Santana <helder.bs.santana_at_gmail.com>
    • Michal Čihař <michal_at_cihar.com>
    • Michel Souza <michel.ekio_at_gmail.com>
    • Danilo Azevedo <mrdaniloazevedo_at_gmail.com>
    • Thiago Casotti <thiago.casotti_at_uol.com.br>
    • Vinícius Araújo <vinipitta_at_gmail.com>
    • Yan Gabriel <yansilvagabriel_at_gmail.com>
  • Slovaque

    • Martin Lacina <martin_at_whistler.sk>
    • Michal Čihař <michal_at_cihar.com>
    • Jozef Pistej <pistej2_at_gmail.com>
  • Slovène

    • Domen <mitenem_at_outlook.com>
  • Espagnol

    • Luis García Sevillano <floss.dev_at_gmail.com>
    • Franco <fulanodetal.github1_at_openaliasbox.org>
    • Matías Bellone <matiasbellone+weblate_at_gmail.com>
    • Ronnie Simon <ronniesimonf_at_gmail.com>
  • Turc

    • Burak Yavuz <hitowerdigit_at_hotmail.com>

Crédits originaux de la version 2.1.0

Ce travail est basé sur MySQL-Webadmin de Peter Kuppelwieser. C’était son idée de créer une interface Web pour utiliser MySQL en utilisant PHP3. Bien que je n’ai pas utilisé son code source, je lui ai emprunté des concepts. phpMyAdmin a été créé car Peter m’avait dit qu’il allait arrêter le développement de son (super) outil.

Remerciements à

  • Amalesh Kempf <ak-lsml_at_living-source.com> qui a contribué au code pour la vérification lors de la suppression d’une table ou d’une base de données. Il a aussi suggéré de pouvoir être capable de spécifier la clé primaire sur tbl_create.php3. Dans la version 1.1.1, il a contribué à ldi_*.php3-set (import de fichiers texte) et au rapport de bogue. Plus beaucoup d’autres petites améliorations.
  • Jan Legenhausen <jan_at_nrw.net> : Il a fait beaucoup des changements introduits dans la version 1.3.0 (dont certains très importants comme l’authentification). Dans la version 1.4.1, il a amélioré la fonctionnalité d’export de table. Plus des corrections de bogues et l’aide.
  • Marc Delisle <DelislMa_at_CollegeSherbrooke.qc.ca> a permis la localisation de phpMyAdmin en extrayant les chaînes dans un fichier séparé. Il a aussi contribué à la traduction française.
  • Alexandr Bravo <abravo_at_hq.admiral.ru> qui a contribué à tbl_select.php3, une fonctionnalité pour afficher seulement certaines colonnes d’une table.
  • Chris Jackson <chrisj_at_ctel.net> a ajouté le support de fonctions MySQL dans tbl_change.php3. Il a aussi ajouté la fonctionnalité « Query by Example » dans la version 2.0.
  • Dave Walton <walton_at_nordicdms.com> a ajouté le support pour des serveurs multiples et est un contributeur régulier pour la correction de bogues.
  • Gabriel Ash <ga244_at_is8.nyu.edu> a contribué aux fonctionnalités d’accès aléatoires dans la version 2.0.6.

Les personnes suivantes ont contribué à des changements, améliorations, corrections de bogues ou support d’une nouvelle langue, mineurs :

Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas Kleemann, Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel Piankov, Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein, Jannis Hermanns, G. Wieggers.

Et merci à tous les autres qui m’ont envoyé des suggestions par courriel, des rapports de bogue ou juste des retours d’utilisation.

Glossaire

de Wikipedia, l’encyclopédie libre

.htaccess

le nom par défaut du fichier de configuration de niveau de répertoire de Apache.

ACL
Liste des contrôles d’accès
Blowfish

un algorithme de chiffrement symétrique par blocs conçu par Bruce Schneier en 1993.

Navigateur

un logiciel qui permet à un utilisateur d’afficher et d’interagir avec du texte, des images et d’autres informations typiquement situés sur une page Web ou sur un site Web sur le Word Wide Web.

bzip2

un algorithme de compression de données en logiciel libre et à sources ouvertes et un programme développé par Julian Seward.

CGI

Common Gateway Interface (littéralement « Interface passerelle commune »), est une technologie des serveurs HTTP. Ce dernier, au lieu de renvoyer le contenu d’un fichier (image ou HTML), exécute un programme puis retourne le contenu généré, comme s’il s’agissait d’un contenu de fichier.

Changelog

un journal ou un enregistrement des changements fait dans un projet.

Client

un ordinateur qui accède à un service (distant) sur un autre ordinateur par un réseau.

colonne

un ensemble de valeurs de données d’un type particulièrement simple, une pour chaque ligne du tableau.

une suite d’informations envoyée par un serveur à un navigateur Web, que ce dernier retourne lors de chaque interrogation du même serveur.

CSV

valeurs séparées par des virgules

DB
voir Base de données
Base de données

une collection de données ordonnées.

Moteur
voir Storage Engines
Extension PHP

un module PHP qui étend PHP avec des fonctionnalités supplémentaires.

FAQ

une Foire Aux Questions est une liste de question posées fréquemment et leurs réponses.

Champ

une partie de données divisées/colonnes.

Clé étrangère

une colonne ou un groupe de colonnes dans une base de données qui pointe vers une clé de colonne ou d’un groupe de colonne d’une autre ligne de la base de données dans une table (habituellement différente).

GD

une bibliothèque graphique de Thomas Boutell et d’autres pour la manipulation dynamique d’images.

GD2
voir GD
GZip

GZip est le raccourci pour GNU zip, un logiciel GNU libre, utilitaire de compression de fichier.

hôte

toute machine connectée à un réseau informatique, un nœud qui a un nom d’hôte.

nom d’hôte

le nom unique par lequel est connu un équipement attaché au réseau sur celui-ci.

HTTP

Hypertext Transfer Protocol, littéralement « protocole de transfert hypertexte », est un protocole de communication informatique client-serveur développé pour le World Wide Web.

HTTPS

une connexion HTTP avec des mesures de sécurité additionnelles.

IEC
International Electrotechnical Commission
IIS

Internet Information Services est un serveur HTTP et/ou FTP créé par Microsoft pour ses systèmes d’exploitation Windows.

Index

une fonctionnalité qui permet d’accéder rapidement aux lignes dans une table.

IP

Protocole Internet (en anglais « Internet Protocol »). Le protocole Internet gère le transport et le routage des paquets sur le réseau.

Adresse IP

un numéro unique qu’utilisent les équipements pour s’identifier et communiquer entre eux sur un réseau en utilisant le protocole IP standard.

IPv6

IPv6 (Internet Protocol version 6) est la dernière révision du protocole IP (IP), conçue pour pallier le manque d’adresses IPv4 disponibles.

ISAPI

Internet Server Application Programming Interface est l’API de Internet Information Services (IIS).

FAI

Un fournisseur d’accès à Internet, est un organisme (généralement une entreprise) offrant une connexion au informatique à Internet et des services associés.

ISO

International Standards Organisation

JPEG

Joint Photographic Experts Group, nom d’un comité créé en 1986 résultant de la fusion de plusieurs groupes (d’où le joint) de professionnels de l’industrie de l’image. Ce comité a donné son nom à la norme ouverte de compression d’images numériques JPEG.

JPG
voir JPEG
Clé
voir Index
LATEX

un système de préparation de document pour le programme TeX.

Mac

les Apple Macintosh sont une ligne d’ordinateurs personnels conçus, développés, fabriqués et commercialisés par Apple Inc.

macOS

le système d’exploitation propriétaire fourni avec l’ordinateur Macintosh d’Apple Computer, depuis 2001 et distribué également séparément pour des modèles antérieurs.

mbstring

Les fonctions mbstring de PHP gèrent les langues utilisant les jeux de caractères multi-octets, dont UTF-8.

Si vous rencontrez des problèmes pour installer cette extension, veuillez suivre 1.20 Je reçois une erreur sur l’absence des extensions mysqli et mysql. qui fournit des informations utiles.

Type de médias

Un type de média (anciennement connu sous le nom de type MIME) est un identifiant en deux parties pour les formats de fichiers et les contenus de format transmis sur Internet.

Voir aussi

<https://fr.wikipedia.org/wiki/Type_de_médias>

MIME

Multipurpose Internet Mail Extensions est un format de données permettant d’introduire dans les messages SMTP (courriels) différents types de fichiers multimédias.

module

extension modulaire pour le serveur HTTP Apache httpd.

mod_proxy_fcgi

un module Apache mettant en œuvre une interface Fast CGI ; PHP peut être exécuté en tant que module CGI, FastCGI ou directement en tant que module Apache.

MySQL

MySQL (SQL est acronyme de Structured Query Language en anglais) est un serveur de bases de données relationnelles SQL très rapide, multi-thread, robuste et multi-utilisateurs.

MySQLi

l’extension client PHP de MySQL améliorée.

Voir aussi

“Manuel PHP pour MySQLi <https://www.php.net/manual/fr/book.mysqli.php>”_

mysql

l’extension PHP client de MySQL.

OpenDocument

un standard ouvert pour les documents de bureau.

OS X

voir macOS.

PDF

Portable Document Format, un format de fichier informatique universel créé par la société Adobe Systems pour la diffusion des documents (de types texte, affiche, diapositive, plan, formulaires interactifs…).

PEAR

PHP Extension and Application Repository.

Voir aussi

Site Web de PEAR

PCRE

Perl-Compatible Regular Expressions - Expressions rationnelles compatibles Perl pour PHP

Voir aussi

Manuel PHP pour les expressions régulières compatibles Perl <https://www.php.net/pcre> _

PHP

PHP (venant de l’acronyme récursif PHP : Hypertext Preprocessor), est un langage de script libre principalement utilisé pour être exécuté par un serveur HTTP, mais il peut fonctionner comme n’importe quel langage interprété en utilisant les scripts et son interpréteur sur un ordinateur.

port

une connexion par laquelle des données sont transmises et reçues.

clé primaire

Une clé primaire est un index d’un ou plusieurs champs d’une table ayant des valeurs uniques pour chaque enregistrement de cette table. Chaque table devrait avoir une clé primaire pour accéder et identifier facilement les données de cette table. Il ne peut y avoir qu’une seule clé primaire par table toujours nommée PRIMARY. En fait, une clé primaire n’est autre qu’une unique key avec le nom PRIMARY. Si aucune clé primaire n’est définie, MySQL utilisera la première clé unique comme clé primaire, s’il en existe une.

Vous pouvez créer la clé primaire en créant la table (dans phpMyAdmin, sélectionnez les boutons radio de chaque champ que vous souhaitez avoir dans la clé primaire).

Vous pouvez aussi ajouter une clé primaire à une table existante avec ALTER TABLE ou CREATE INDEX (dans phpMyAdmin, cliquez sur “ajouter un index” dans la page de structure de table sous les champs listés).

RFC

les « request for comment » (RFC, littéralement demande de commentaires) sont une série de documents et normes concernant l’Internet, commencée en 1969. Peu de RFC sont des standards, mais tous les standards de l’Internet sont enregistrés en tant que RFC.

RFC 1952

spécification de format de fichier GZIP version 4.3

Voir aussi

RFC 1952

Ligne (enregistrement, tuple)

représente un seul élément de donnée structuré implicitement dans une table.

Serveur

est un ordinateur ou un programme informatique qui partage un service sur un réseau.

Sodium

L’extension PHP Sodium.

Moteurs de stockage

MySQL peut utiliser plusieurs format pour stocker les données sur le disque. Ces formats sont appelés moteurs de stockage ou type de tables. phpMyAdmin permet à un utilisateur de modifier le moteur de stockage pour une table en particulier en utilisant l’onglet Opérations.

Les types de tables les plus communs sont InnoDB et MyISAM, bien que d’autres types existent qui peuvent être appropriés dans certaines situations.

socket

une forme de communication inter-processus.

SSL

Secure Sockets Layer, (aujourd’hui remplacé par TLS) est un protocole de sécurisation des échanges sur Internet.

Procédure stockée

ensemble d’instructions SQL pré-compilées, stockées dans une base de données et exécutées sur demande par le système de gestion de base de données qui manipule la base de données

SQL

Structured Query Language

table

un ensemble d’éléments de données (cellules) qui est organisé, défini et stocké en lignes et en colonnes où chaque élément est identifié par un libellé ou une clé unique ou par sa position par rapport aux autres éléments.

tar

TAR (de l’anglais « Tape Archive », littéralement « archive sur bande ») est l’outil d’archivage de fichiers standard de UNIX. On appelle parfois le fichier d’archivage créé un « tarball ».

TCP

Transmission Control Protocol (« protocole de contrôle de transmissions »), est un protocole de transport fiable, en mode connecté, documenté dans la RFC 793 de l’IETF.

TCPDF

Bibliothèque PHP pour générer des fichiers PDF.

Voir aussi

<https://tcpdf.org/>

déclencheur

dispositif logiciel qui provoque un traitement particulier en fonction d’événements prédéfinis. Par extension, c’est l’événement lui-même qui est qualifié de déclencheur

clé unique
Une clé unique est un index constitué d’un ou plusieurs champs d’une table qui a une valeur unique pour chaque enregistrement. La première clé unique sera traitée comme primary key si aucune clé primaire n’est définie.
URL

Uniform Resource Locator - Une adresse réticulaire (du latin rete qui signifie « filet » donc par extension réseau) est une chaîne de caractères utilisée pour identifier les ressources dans le World Wide Web.

Serveur Web

un ordinateur tenant le rôle de serveur informatique sur lequel fonctionne un logiciel serveur HTTP ou le logiciel serveur HTTP lui-même.

XML

Extensible Markup Language (« langage de balisage extensible »), généralement abrégé XML, est un standard du World Wide Web Consortium qui sert de base pour créer des langages de balisage : c’est un « méta-langage ».

Zip

un format de compression de données et d’archivage populaire.

Zlib

une bibliothèque de compression de données libre et multiplateforme de Jean-loup Gailly et Mark Adler.

Stratégie de Sécurité du Contenu

L’en-tête de réponse HTTP Content-Security-Policy permet aux administrateurs de sites web de contrôler les ressources que l’agent utilisateur est autorisé à charger pour une page donnée.