Il est relativement facile d’installer un serveur MySQL, que ce soit pour faire un environnement de développement ou de production. En effet, un simple yum/apt-get/aptitude install mysql-server (suivant votre gestionnaire de paquets) vous installe en quelques minutes ce serveur de base de données avec une configuration par défaut.

Pourtant, un serveur MySQL n’est pas exploitable tout de suite : le mot de passe root n’est pas initialisé, des privilèges anonymes existent, etc. Il est préférable d’accorder de l’importance à la sécurité au début d’un projet, que d’essayer d’y revenir plus tard.

La commande mysql_secure_installation va apporter un minimum de sécurité pour vos nouvelles installations. Elle vous permet (selon vos choix) :

  • de changer le mot de passe root,
  • de supprimer les comptes anonymes,
  • de désactiver la connexion du compte root à distance,
  • de supprimer la base de données « test » à laquelle tout le monde peut avoir accès.

L’outil finit sur un rechargement des privilèges (« Flush privileges ») afin d’appliquer les changements de droits au serveur.

Pour lancer la commande : /usr/bin/mysql_secure_installation.

Sécurisation de base d'un serveur MySQL avec mysql_secure_installation

Sécurisation de base d'un serveur MySQL avec mysql_secure_installation

Bien entendu, ceci n’exclut pas une politique de sécurisation globale (présence d’un firewall, port MySQL changé, filtrage des privilèges par adresse source, etc.). Cette commande vous permet juste de passer sur les points critiques en quelques secondes.

Note : je traite uniquement de Linux, je déconseille l’utilisation de MySQL sur un OS Windows. Par ailleurs, je ne sais pas si la commande mysql_secure_installation existe sur Windows.