installer phpMyAdmin manuellement

38
installer phpMyAdmin manuellement

Sur le tutoriel 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. Or en l’installant manuellement vous ne dépendez pas des paquets et gérez vous-même vos mises à jour sauf que c’est à vous de surveiller les mises à jour et les faire.
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.2 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

wget https://files.phpmyadmin.net/phpMyAdmin/5.2.2/phpMyAdmin-5.2.2-all-languages.tar.gz

Vous pouvez faire un ls pour afficher le contenu de votre dossier et vous verrez notamment l’archive phpMyAdmin-5.2.2-all-languages.tar.gz
Vous décompressez l’archive avec la commande

tar xvf phpMyAdmin-5.2.1-all-languages.tar.gz

Déplacez le dossier et vous le renommez en phpmyadmin

mv phpMyAdmin-5.2.2-all-languages/ /usr/share/phpmyadmin

Supprimez l’archive téléchargé, vous n’en aurez plus besoin.

rm phpMyAdmin-5.2.2-all-languages.tar.gz

Voyons maintenant la configuration

 

Configuration

Vous allez créer un dossier temporaire utile à phpMyAdmin

mkdir -p /var/lib/phpmyadmin/tmp

et vous mettez 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. Vous allez 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.
Vous éditez 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 le contenu de la ligne en mettant un mot de passe.

$cfg['Servers'][$i]['controlpass'] = 'mettez un mot de passe';

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.
Créez les tables et la base de données en tapant

mysql < /usr/share/phpmyadmin/sql/create_tables.sql

Vous ouvrez mysql en tapant mysql et vous mettez ceci

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 'eruptis'@'localhost' IDENTIFIED BY 'motdepasse' WITH GRANT OPTION;

Remplacez eruptis et motdepasse par ce que vous voulez puis validez.
Pour sortir tapez exit ou quit.

Maintenant vous allez configurer apache2. On créé le fichier de configuration

nano /etc/apache2/conf-available/phpmyadmin.conf

et vous mettez ceci dedans

# 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.
Vous activez la configuration

a2enconf phpmyadmin.conf

et vous relancez 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 autorisant que votre IP à se connecter à phpMyAdmin. Pour se faire vous éditer le fichier (si vous avez installé manuellement)

nano /etc/apache2/conf-available/phpmyadmin.conf

si vous avez installé phpMyAdmin via les paquets Debian ce sera dans le fichier

nano /etc/phpmyadmin/apache.conf

puis trouvez la partie

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

et ajoutez en dessous (attention à la tabulation)

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

ce qui donne

<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 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 c’est tout bon. Vous savez installer phpMyAdmin manuellement