Adminer en local pour gérer ses bases distantes

Utiliser Adminer ?

Au menu aujourd’hui, un petit tuto pour utiliser un Adminer en local pour se connecter et gérer des bases distantes.

Il y a quelques temps, en bon développeur que je suis, je me suis posé la question de comment je pourrais accéder facilement aux bases de données sur les serveurs sur lesquels ne sont pas installés phpMyAdmin. Avant, je me connectais en ssh pour faire mes requêtes directement. Pas très pratique, pas très ergonomique, quelque chose me disait qu’il y avait un moyen de faire tout ça plus sympa.

Ma première approche a été d’utiliser Adminer sur mes serveurs distants. Adminer, qu’est-ce que c’est ? Un simple fichier php associé à un fichier css qui permet d’avoir une version légère de phpMyAdmin. C’est tout simple, vous téléchargez le zip d’Adminer ici : https://www.adminer.org/ ainsi qu’un des css proposés si vous voulez une interface un peu plus sexy, vous mettez ces deux fichiers dans votre dossier apache et terminé. Je passe volontairement l’installation exacte et comment accéder a votre Adminer car je vais l’expliquer plus tard. Il y avait déjà un mieux, j’avais une version légère de phpMyAdmin quand j’en avais besoin. Mais je n’étais pas tout a fait satisfait, car à chaque fois que j’avais besoin de faire une requête, il me fallait faire un scp en ligne de commande pour copier les fichiers d’Adminer sur la machine ou le mysql était installé. Pas sûr que je sois gagnant en termes de temps !

Ma deuxième approche a été de me dire, et si j’installais Adminer directement sur mon poste et redirigeais mon port mysql, le 3306, sur celui de la machine distante ?
Et vous savez quoi ? Ça marche comme sur des roulettes. Je vais maintenant vous expliquer de quoi vous avez besoin pour mettre tout ça en place !

Installation

La première chose à avoir sur son poste est Apache. Pour ceux qui ne l’ont pas déjà :

 
sudo apt-get install apache2

dans un terminal lancera l’installation d’Apache. Cette commande a été testé sur ubuntu, vous pouvez bien évidemment utiliser votre gestionnaire de paquets habituel.

Une fois Apache installé, téléchargez adminer.php et adminer.css directement sur leur site : https://www.adminer.org/

Pour savoir où poser ces deux fichiers, vous pouvez ouvrir votre configuration Apache dans un terminal :

 
vi /etc/apache2/sites-enabled/000-default

J’obtiens ceci :

 
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www        
                Options FollowSymLinks
                AllowOverride None        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all      
        ErrorLog ${APACHE_LOG_DIR}/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128

Ce qui nous intéresse dans ce fichier est ceci :

 
DocumentRoot /var/www

On mettra donc nos fichiers adminer.php et adminer.css dans /var/www

Une fois ceci fait, on vérifie que le service apache2 est lancé avec la commande

 
service apache2 status 

et on peut normalement se rendre a l’url : http://localhost/adminer.php

A ce moment la, vous devriez avoir quelque chose comme ceci ( le thème peut changer en fonction du fichier css que vous avez choisi ) :

Si vous avez une base mysql en local vous pouvez déjà vous y connecter depuis votre Adminer. Mais on va aller un peu plus loin et essayer de se connecter à une base située sur un serveur distant.
Du coup, on va avoir besoin de faire un tunnel ssh redirigeant notre port mysql sur le port mysql de la machine distante.

Pour cela, dans un terminal, tapez :

 
sudo ssh -L 3306:localhost:3306 root@adresse-de-votre-serveur 

où vous remplacez bien évidemment « adresse-de-votre-serveur » par l’adresse de votre serveur.

Si vous avez déjà un Mysql en local, lorsque vous faites le tunnel, changez le port local, sinon le tunnel ne fonctionnera pas et vous aurez une erreur « bind: Address already in use »
Une fois le tunnel en place, vous pouvez désormais vous connecter depuis votre Adminer à votre base distante. Dans Adminer, mettez 127.0.0.1 dans server ou 127.0.0.1:le port local que vous avez choisi( pour de sombres raisons de résolutions dns, localhost ne semble pas fonctionner ) puis vos informations de connexion et le nom de la base à laquelle vous souhaitez vous connecter. Une fois cela fait, cliquez sur Login, et voila, vous êtes connectés !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *