MySQL & 1and1 : Comment administrer sans passer par l’interface de gestion du compte

Clients de 1&1, vous avez sûrement déjà pesté contre l’interface d’administration de la base de données fournie.
Difficilement accessible puisqu’il faut, dans un premier temps se connecter a son compte puis sélectionner la base désirée ce qui fait un total de trois pages pour y accéder. De plus,  la session a tendance à se terminer vite… et toujours au moment le moins propice, c’est-à-dire à l’enregistrement de données (le mal aimé Session ID Missing ! ).
Pour finir, la version de phpMyAdmin fournie commence à dater puisqu’il s’agit de la version 2.6.4, alors que la version actuelle est la 3.3.3. Bref, cela est inadmissible pour un hebergement digne de ce nom, j’ai alors cherché une alternative et je compte vous partager cette expérience aujourd’hui.

Nous allons donc installer nous même phpMyAdmin, plutôt que d’utiliser l’adresse bancale http://phpmyadmin.1and1.fr. Nous allons donc créer notre propre installation configurée selon nos souhaits.

Pré-requis

  • Téléchargez phpMyAdmin
  • Dézippez le fichier obtenu et uploadez-le sur votre FTP. (Ce sera http://monsite.com/pma dans l’exemple)

Configuration

Vous devriez avoir un fichier config.sample.inc.php. Renommez-le en config.inc.php, puis modifiez son contenu selon la logique et le bon sens. Si vous n’avez ni l’un ni l’autre, lisez la suite !

• Type d’authentification

Vous pouvez choisir entre plusieurs types de connexions : par cookie, par http, ou par connexion directe (config).
L’avantage de la connexion directe, c’est que votre session restera indéfiniment ouverte…
L’inconvénient, c’est que n’importe qui aura accès à vos fichiers (à moins que vous n’ayez protégé le fichier via Apache avec un .htaccess, j’en reparle juste après).

Personnellement, j’ai choisi cette dernière méthode (config). À titre d’exemple, voici la configuration de base que j’utilise :

/* Paramétrage de l’identification */
$cfg['Servers'][$i]['user']          = ‘login_bdd’;
$cfg['Servers'][$i]['password']      = ‘pass_bdd’;
$cfg['Servers'][$i]['auth_type']     = ‘config’;
/* Server parameters */
$cfg['Servers'][$i]['host'] = ‘serveur.1and1.fr’;
$cfg['Servers'][$i]['connect_type'] = ‘tcp’;
$cfg['Servers'][$i]['compress'] = false;

Sécurisation

Le problème de l’authentification config, c’est que n’importe qui peut modifier vos bases de données.

En effet, cette solution ne doit être utilisée que couplée avec un dispositif de sécurité empêchant l’accès aux pages !
Je recommande par exemple la protection par fichier .htaccess.

Vous avez maintenant un client phpMyAdmin fonctionnel ! Rendez-vous sur la page à laquelle vous l’avez installé pour en profiter.

Optimisation

  • Sécurisation : les .htaccess

Je compte faire un tutoriel plus complet sur la sécurisation et les .htaccess dans le cadre de ma trilogie sur l’installation d’un serveur Web de A à Z, mais je vais tout expliquer comment protéger votre dossier /pma si vous avez mit l’accès en « config »

Commencez par créer un fichier .htaccess à la racine du dossier /pma et ajoutez-y les lignes ci-dessous:

AuthName « Page d’administration protégée »
AuthType Basic
AuthUserFile « /chemin_absolu_de_l_hébergeur/www/phpMyAdmin/.htpasswd »
Require valid-user

Vous l’avez surement deviné, on va maintenant créer le fichier contenant les identifiants et mots de passe : le fameux .htpasswd

Identifiant:$8453sgH4y5$2vz1L$Vf568$up5Wxh7xZPF1567

Attention, le mot de passe doit être crypter auparavant, utilisez par exemple la fonction crypt(« mot_de_pass ») inclut dans PHP5.

  • Driver

Plutôt que d’utiliser mysql, vous pouvez passer par mysqli qui est plus rapide (inclus par défaut dans PHP 5).

Il suffit de remplacer

$cfg['Servers'][$i]['extension'] = ‘mysql’;

par

$cfg['Servers'][$i]['extension'] = ‘mysqli’;

  • Masquer certaines base de données

Par défaut, phpMyAdmin liste toutes les bases de données, y compris information_schema qui fournit un accès aux métadonnées sur les bases de données. On ne s’en sert jamais donc pourquoi les afficher ? Vous pouvez modifier ce comportement en spécifiant un tableau (ou un string s’il n’y a qu’une seule possibilité) des bases à afficher, afin d’accélérer l’accès aux données. Le code ci-dessous cache donc cette base ainsi que la base mysql

/* Cacher certaines bases */

$cfg['Servers'][$i]['hide_db'] = ‘information_schema|mysql’;