mysql : hardcoder un mot de passe ou non?
L’automatisation de tâches nécessitant un mot de passe est souvent un dur dilemme en matière de sécurité. J’aimerais bien que mes utilisateurs puissent lister le contenu de telle ou telle base de donnée, mais je ne veux pas qu’ils aient le mot de passe.
De la même manière, on nous conseille généralement d’utiliser les mots de passe les plus cryptiques possibles (ce que je ne conteste pas). Le mot de passe est le sésame magique déplaçant les montagnes pour permettre l’accès à votre jardin secret. Mais peut-être qu’on se concentre justement trop sur le mot de passe lui-même, en oubliant ce qu’il y a derrière. À quoi donne accès ce mot de passe? C’est là la vraie question.
Mysql possède un système de gestion des autorisations très précis. Il est tout à fait possible de créer un utilisateur qui n’aura que le droit en lecture sur une seule table, voir une seule colonne :
grant select on supersecret_db.public_read to "user"@"localhost" identified by "user" ;
Vous pouvez aussi bien n’autoriser que select et update, ce qui permettra à cet utilisateur de lire et modifier des entrées, mais pas d’en créer. Vous pouvez dès lors écrire le login et le mot de passe en plain text dans un script, il n’y a plus de risques.
Je vous renvoie à la documentation officielle pour plus d’informations.