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é).