Comment sécuriser le serveur MySQL ?

I►la robustesse d’un chaîne dépend de la solidité de son maillon le plus faible. Dans cet article, nous allons voir les principes de base de la sécurité sous MySQL.

 

Un utilisateur du serveur MySQL est composé :

  • d’un nom d’utilisateur (user)
  • d’un nom de machine d’ou la connexio se fait (host)

On peut donc avoir un utlisateur root qui se connexte en local, depuis la machine elle même » root@localhost et un utilisateur root qui se connecte depuis un accès distant » root@192.168.10.1.
Attention ce sont 2 comptes différents quelque part qui peuvent avoir des droits et des privilèges différents !

On peut simplifier les choses en créant l’utilisateur root qui pourra se connceter depuis n’importe quel serveur » root@% !

Capture

? Mais cette solution n’est vraiment la meilleure, il vaut mieux ne conserver que l’utilisateur root en local et utiliser SSH pour établir une connexion sécurisée !

Capture1

 

—————————————————————————————————————————–

? Supprimons également le schéma (database) test !

—————————————————————————————————————————–

Ce shéma est proposé par défaut dans MySQL et n’est pas utile pour un serveur en production …

Capture2

 

—————————————————————————————————————————–

? Droits et privilèges …

—————————————————————————————————————————–

Le schéma système mysql contient le stables qui permettent de gérer totalement les rroits des utilisateurs MySQL . Ces tables sont :

  1. user : contient les privilèges de chaque utilisateur
  2. db : contient les droits spécifiques à une base (schéma)
  3. tables_priv  : contient les droits spécifiquesà une table ou à une vue
  4. columns_priv :  contient les droits spéécifiques à une colonne (champ)
  5. procs_priv : contient les droits de sroutines ( procédure sou fonctions)

Capture

 

—————————————————————————————————————————–

? Comment démarrer ou arrêter le serveur MySQL

—————————————————————————————————————————–

? En tant que service : 

Capture1

 

? Directement avec le processus mysqld :

Capture

 

—————————————————————————————————————————–

? Comment réinitialiser le mot de passe root

—————————————————————————————————————————-

On démarre le serveur en utilisant le processus mysqld avec l’option –skip-grant-tables ..
Attention le serveur est vulnérable à ce moment là, puisqu’il ne requiert pas de mot de passe pour se connecter avec le compte root, on n’aurait pus ajouter –skip-networking pour neutraliser les connexions distantes.

Capture

 

—————————————————————————————————————————–

? Comment interdire les connexions distantes

—————————————————————————————————————————–

avec l’option –skip-networking

Capture

 

 

Michel BOCCIOLESI