Généralement on distingue les comptes MySQL des comptes applicatifs.
Perso je procède ainsi :
MySQL :
1 compte root avec tous les droits serveur => Utilisé uniquement par l'admin du serveur
1 compte par application => Le compte application ayant seulement les droits de lecture/écriture sur sa base / ses tables (pas de création/modification de table/vue par ex. ou de SELECT sur des tables inattendues)
Si l'application a une base dédiée => 1 compte admin pour cette base en particulier
CREATE USER my_app@localhost IDENTIFIED BY 'P455vv0|`D';
GRANT INSERT, SELECT, UPDATE ON TABLE my_app_db.* TO my_app@localhost; -- Droits sur toutes les tables de sa base, ici pas de DELETE
Application :
Utilisation du compte de l'application uniquement pour tous les utilisateurs de l'application
https://dev.mysql.com/doc/refman/8.0...eate-user.html
https://dev.mysql.com/doc/refman/8.0/en/grant.html
Partager