phpMyAdmin (Français)

From ArchWiki

État de la traduction: Cet article est la version francophone de PhpMyAdmin. Date de la dernière traduction: 2021-12-28. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

phpMyAdmin est une application Web de gestion pour les systèmes de gestion de base de données MySQL et MariaDB, réalisée principalement en PHP et distribuée sous licence GNU GPL.

Installation

Installez le paquet phpmyadmin.

Exécution

PHP

Assurez-vous que les extensions PHP mariadb et iconv ont été activées.

En option, vous pouvez activer extension=bz2 et extension=zip pour la prise en charge de la compression.

Note: Si open_basedir a été défini, assurez-vous d'inclure /usr/share/webapps et /etc/webapps à open_basedir dans /etc/php/php.ini. Consultez PHP#Configuration.

Apache

Configurez Apache pour utiliser PHP comme indiqué dans l'article Apache HTTP Server (Français)#PHP.

Créez le fichier de configuration d'Apache :

/etc/httpd/conf/extra/phpmyadmin.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

Et l'inclure dans /etc/httpd/conf/httpd.conf :

# Configuration de phpMyAdmin
Include conf/extra/phpmyadmin.conf
Note: Par défaut, toute personne pouvant accéder au serveur Web Apache peut consulter la page de connexion de phpMyAdmin sous cette URL. Pour changer cela, modifiez /etc/httpd/conf/extra/phpmyadmin.conf à votre convenance. Par exemple, si vous ne voulez pouvoir y accéder que depuis la même machine, remplacez Require all granted par Require local. Attention, cela empêchera la connexion à PhpMyAdmin sur un serveur distant. Si vous souhaitez toujours accéder à PhpMyAdmin sur un serveur distant de manière sécurisée, vous pouvez envisager de mettre en place un OpenSSH (Français)#Tunnel SOCKS chiffré.

Après avoir apporté des modifications au fichier de configuration d'Apache, redémarrez httpd.service.

Lighttpd

Pour configurer Lighttpd, assurez-vous qu'il est capable de servir des fichiers PHP et que mod_alias a été activé.

Ajoutez l'alias suivant pour PhpMyAdmin à la configuration :

 alias.url = ("/phpmyadmin" => "/usr/share/webapps/phpMyAdmin/")

Nginx

Assurez-vous de configurer nginx#FastCGI et d'utiliser nginx#Server blocks pour faciliter la gestion.

De préférence, accédez à phpMyAdmin par sous-domaine, par exemple https://pma.domain.tld:

/etc/nginx/sites-available/pma.domain.tld
server {
    server_name pma.domain.tld;
    ; listen 80; # also listen on http
    ; listen [::]:80;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    index index.php;
    access_log /var/log/nginx/pma.access.log;
    error_log /var/log/nginx/pma.error.log;

    # Allows limiting access to certain client addresses.
    ; allow 192.168.1.0/24;
    ; allow my-ip;
    ; deny all;

    root /usr/share/webapps/phpMyAdmin;
    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /index.php;

    location ~ \.php$ {
        try_files $uri $document_root$fastcgi_script_name =404;

        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;

        fastcgi_param HTTP_PROXY "";
        fastcgi_param HTTPS on;
        fastcgi_request_buffering off;
   }
}

Ou par sous-répertoire, par exemple https://domain.tld/phpMyAdmin :

/etc/nginx/sites-available/domain.tld
server {
    server_name domain.tld;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    index index.php;
    access_log /var/log/nginx/domain.tld.access.log;
    error_log /var/log/nginx/domain.tld.error.log;

    root /srv/http/domain.tld;
    location / {
        try_files $uri $uri/ =404;
    }

    location /phpMyAdmin {
        root /usr/share/webapps/phpMyAdmin;
    }

    # Deny static files
    location ~ ^/phpMyAdmin/(README|LICENSE|ChangeLog|DCO)$ {
       deny all;
    }

    # Deny .md files
    location ~ ^/phpMyAdmin/(.+\.md)$ {
      deny all;
   }

   # Deny setup directories
   location ~ ^/phpMyAdmin/(doc|sql|setup)/ {
      deny all;
   }

   #FastCGI config for phpMyAdmin
   location ~ /phpMyAdmin/(.+\.php)$ {
      try_files $uri $document_root$fastcgi_script_name =404;

      fastcgi_split_path_info ^(.+\.php)(/.*)$;
      fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;

      fastcgi_param HTTP_PROXY "";
      fastcgi_param HTTPS on;
      fastcgi_request_buffering off;
   }
}

Configuration

Le fichier de configuration principal se trouve à /usr/share/webapps/phpMyAdmin/config.inc.php.

Définir un serveur MySQL distant

Si le serveur MySQL est un hôte distant, ajoutez la ligne suivante au fichier de configuration :

$cfg['Servers'][$i]['host'] = 'example.com' ;

Utiliser le script d'installation

Pour permettre l'utilisation du script d'installation de phpMyAdmin (par exemple, http://localhost/phpmyadmin/setup), assurez-vous que /usr/share/webapps/phpMyAdmin est accessible en écriture pour l'utilisateur http :

# mkdir /usr/share/webapps/phpMyAdmin/config
# chown http:http /usr/share/webapps/phpMyAdmin/config
# chmod 750 /usr/share/webapps/phpMyAdmin/config

Ajouter la phrase de passe blowfish_secret

Il est nécessaire de saisir une chaîne unique de 32 caractères pour utiliser pleinement l'algorithme blowfish utilisé par phpMyAdmin, ce qui permet d'éviter le message ERROR : The configuration file now needs a secret passphrase (blowfish_secret) :

/usr/share/webapps/phpMyAdmin/config.inc.php
$cfg['blowfish_secret'] = '...' ;

Activer le stockage de la configuration

Les options supplémentaires telles que les liens vers les tables, le suivi des modifications, la création de PDF et les requêtes de mise en signet sont désactivées par défaut, affichant Le stockage de la configuration de phpMyAdmin n'est pas complètement configuré, certaines fonctionnalités étendues ont été désactivées. sur la page d'accueil.

Note: Cet exemple suppose que vous souhaitez utiliser le nom d'utilisateur par défaut pma comme controluser, et pmapass comme controlpass.

Dans /usr/share/webapps/phpMyAdmin/config.inc.php, décomposez (enlevez les "//"s" au début), et modifiez-les en fonction de vos informations d'identification si nécessaire :

/usr/share/webapps/phpMyAdmin/config.inc.php
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = 'my-host';
// $cfg['Servers'][$i]['controlport'] = '3306';
$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';

Configurer la base de données

Deux options sont disponibles pour créer les tables requises :

  • Importer /usr/share/webapps/phpMyAdmin/sql/create_tables.sql en utilisant PhpMyAdmin.
  • Exécuter mysql -u root -p < /usr/share/webapps/phpMyAdmin/sql/create_tables.sql dans la ligne de commande.

Configurer l'utilisateur de la base de données

Pour appliquer les permissions requises pour controluser, exécutez la requête suivante :

Note: Veillez à remplacer toutes les instances de pma et pmapass par les valeurs définies dans config.inc.php. Si vous configurez ce système pour une base de données distante, vous devez également remplacer localhost par l'hôte approprié
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT (
    Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
    Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
    File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
    Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
    Execute_priv, Repl_slave_priv, Repl_client_priv
    ) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
    ON mysql.tables_priv TO 'pma'@'localhost';

Afin d'utiliser les fonctionnalités de signet et de relation, définissez les permissions suivantes :

GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' ;

Connectez-vous à nouveau pour vous assurer que les nouvelles fonctionnalités sont activées.

Activer la mise en cache des modèles

Modifiez /usr/share/webapps/phpMyAdmin/config.inc.php pour ajouter la ligne :

$cfg['TempDir'] = '/tmp/phpmyadmin' ;

Supprimer le répertoire de configuration

Supprimez le répertoire de configuration temporaire une fois la configuration terminée. Cela supprimera également l'alerte de l'interface web :

# rm -r /usr/share/webapps/phpMyAdmin/config

Installer des thèmes

Les thèmes se trouvent dans /usr/share/webapps/phpMyAdmin/themes. Vous pouvez trouver de nouveaux thèmes sur https://www.phpmyadmin.net/themes/.

Vous pouvez simplement télécharger et extraire le nouveau thème et il fonctionnera après le rafraîchissement de phpmyadmin. Cependant, vous devez télécharger le thème pour la bonne version de phpmyadmin, les thèmes pour les anciennes versions ne fonctionneront pas.

Voir aussi