Page 1 sur 1

installer phpMyAdmin manuellement

Posté : 31 déc. 2023, 17:09
par Papy___
phpmyadmin.jpg



Sur les tutoriels d'installation de serveur Web je vous ai montré comment installer phpMyAdmin via les paquets Debian. Pratique mais vous dépendez des mises à jour des paquets qui parfois peuvent être assez longues. Je vous avez montré qu’en installant phpMyAdmin via les paquets on pouvait mettre à jour en téléchargeant la dernière version phpMyAdmin et en écrasant l’ancienne, c’est fonctionnel il n’y a pas de soucis mais disons que si vous voulez pousser un peu plus loin votre configuration, votre système pense qu’il a toujours l’ancienne version d’installé. Or en l’installant manuellement vous ne dépendez pas des paquets et gérez vous-même vos mises à jour.
Je pars du principe que vous avez suivi mon tutoriel sur l’installation d’un serveur web et que vous en êtes à l’installation de phpMyAdmin.


Installation

Connectez vous en root ou en user ayant les droits nécessaire pour effectuer les actions sur votre serveur dédié.
Vous allez télécharger la dernière version de phpMyAdmin sur le site officiel ici
Lors de la rédaction de ce tutoriel la dernière version est phpMyAdmin 5.2.1 et vous prenez la version .tar.gz.
Pour obtenir le lien de téléchargement vous allez sur le lien puis clic droit et copier le lien et sur votre dédié vous allez dans
cd /opt
vous pourriez prendre un autre dossier mais j’utilise régulièrement celui-ci pour faire cela. Puis tapez
Vous pouvez faire un ls pour afficher le contenu de votre dossier et vous verrez notamment l’archive phpMyAdmin-5.2.1-all-languages.tar.gz
On décompresse l’archive avec la commande
tar xvf phpMyAdmin-5.2.1-all-languages.tar.gz
On déplace le dossier et on le renomme en phpmyadmin
mv phpMyAdmin-5.2.1-all-languages/ /usr/share/phpmyadmin
on supprime l’archive téléchargé, vous n’en aurez plus besoin.
rm phpMyAdmin-5.2.1-all-languages.tar.gz
Voyons maintenant la configuration


Configuration

On va créer un dossier temporaire utile à phpMyAdmin
mkdir -p /var/lib/phpmyadmin/tmp
et on met les droits sur le user www-data, c’est lui qui gère ce qui touche au web.
chown -R www-data:www-data /var/lib/phpmyadmin
Lors de l’installation un fichier de configuration est fourni. Nous allons le copier et le renommer car c’est un fichier exemple.
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Fichier config.sample.inc.php renommé en config.inc.php et c’est sous ce nom qu’il est fonctionnel.
On édite le fichier
nano /usr/share/phpmyadmin/config.inc.php
trouvez la ligne suivante et modifiez la de façon à mettre un mot de passe de 32 caractères et rentrez le bien entre les ''
$cfg['blowfish_secret'] = 'vous devez mettre ici 32 caractères et tout attaché et ne mettez pas d’accent etc'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
ensuite plus bas
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';

/* Storage database and tables */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
vous dé-commentez les lignes de façon à faire ceci
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mettez un mot de passe';

/* 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'
remplacez la partie rouge par un mot de passe de votre choix puis tout en bas après la dernière ligne, sur une nouvelle ligne, vous ajoutez ceci
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Vous refermez votre fichier en sauvegardant vos modifications.
On crée les tables et les bases de données en tapant
mysql < /usr/share/phpmyadmin/sql/create_tables.sql
On ouvre mysql en tapant mysql
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'votremotdepasse';
remplacez "votremotdepasse" par celui que vous avez mis plus haut sur la ligne
$cfg['Servers'][$i]['controlpass'] = 'mettez un mot de passe';
Profitez que mysql est ouvert pour créer votre utilisateur root, celui qui aura tous les droits. Tapez
GRANT ALL PRIVILEGES ON *.* TO 'plugins-fr'@'localhost' IDENTIFIED BY 'motdepasse' WITH GRANT OPTION;
Remplacez plugins-fr et motdepasse par ce que vous voulez puis validez.
Pour sortir tapez exit ou quit.

Maintenant on va configurer apache2. On créé le fichier de configuration
nano /etc/apache2/conf-available/phpmyadmin.conf
et vous mettez ceci dedans

Code : Tout sélectionner

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <IfModule mod_authn_file.c>
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/phpmyadmin/htpasswd.setup
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>
Vous pouvez modifier en haut du fichier la ligne
Alias /phpmyadmin /usr/share/phpmyadmin
et remplacer phpmyadmin par ce que vous voulez et ce sera la terminaison de votre lien pour accéder à phpMyAdmin. Si vous mettez par exemple adminsql votre lien sera votre-site.com/adminsql
Fermez ensuite votre fichier en sauvegardant.
On active la configuration
a2enconf phpmyadmin.conf
et on relance apache2
service apache2 restart
Votre phpMyAdmin est maintenant installé et fonctionnel. Si vous avez installé un certificat SSL votre phpMyAdmin est accessible via votre lien https://votre-site.com/adminsql


Mettre à jour phpMyAdmin

Pour mettre à jour c’est très simple, il vous suffit de télécharger la dernière version sur le site officiel et d’écraser l’ancienne qui est dans
/usr/share/phpmyadmin/
en faisant bien attention à ne pas supprimer le fichier config.inc.php


Restreindre l'accès

Vous pouvez pousser la sécurité encore un peu plus loin en n'autorisant que votre IP à se connecter à phpMyAdmin. Pour se faire vous éditer le fichier
nano /etc/apache2/conf-available/phpmyadmin.conf
puis trouvez la partie

Code : Tout sélectionner

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
puis ajoutez en dessous (attention à la tabulation)

Code : Tout sélectionner

# CONNEXION PHPMYADMIN AUTORISE AVEC CETTE IP
	Order deny,allow
	Deny from all
	Allow from 100.100.100.100
ce qui donne

Code : Tout sélectionner

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    
# Autorisation de connexion a phpmyadmin via IP
    Order deny,allow
    Deny from all
    Allow from 100.100.100.100
remplacez 100.100.100.100 par votre adresse IP. Vous pouvez également ajouter d'autres IPs autorisées. Il vous suffit de faire un espace après votre IP et ajouter l'autre. Par exemple 100.100.100.100 200.200.200.200
Refermez le fichier en sauvegardant puis relancez apache2
service apache2 restart
et voilà.