Sécurité MySQL
Sécurisation d'un serveur de bases de données
Changer le mot de passe de root
Changer le mot de passe de rootmysql> SET PASSWORD FOR root@localhost=PASSWORD('secret');
Note: est utilisé ci-dessus la fonction PASSWORD() qui permet de crypter le mot de passe
Ensuite, il faut réactualiser les privilèges:
mysql> FLUSH PRIVILEGES;
mysql> SELECT host, user, password FROM user;
mysql> SHOW GRANTS FOR root@localhost;
Attention: si vous changez le mot de passe de root sur le serveur, il vous faut aussi le changer pour phpmyAdmin. Pour cela, voir le fichier "config.inc.php" au niveau de l'option "password":
$cfg['Servers'][$i]['password'] = '';
De plus, il faut que phpmyAdmin demande le mot de passe à l'ouverture.
Pour cela, toujours dans le fichier "config.inc.php", voir l'option :$cfg['Servers'][$i]['auth_type'] = 'config';
Cette option est à "config" par défaut. La mettre à "http" pour avoir une demande de mot de passe à l'ouverture.
Supprimer le compte anonyme du serveur
Les versions de MySQL antérieures à la 5 créés un compte anonyme par défaut ce qui permettait un accès à toutes les bases dont le nom commençaient par le mot test.
Suppression du compte anonyme:mysql> DELETE FROM user WHERE user='';
mysql> DELETE FROM db WHERE db LIKE 'test%';
Note: le % est un jocker signifie "toutes suite de caractères". Pour un caractère, on utilise le joker tiret inférieur (_).
Ensuite, il faut réactualiser les privilèges:
mysql> FLUSH PRIVILEGES;
Voir aussi Comment sécuriser MySQL et Découvrez les dangers de MySQL et MariaDB