Django a besoin d'un accès complet à la base de données sous-jacente, si vous souhaitez utiliser toutes ses fonctionnalités comme migrations . Par conséquent, il est recommandé dans la documentation d'accorder tous les privilèges.
Il existe des cas d'utilisation dans lesquels vous souhaiterez peut-être restreindre l'accès - par ex. si vous avez un schéma non géré, qui est partagé avec d'autres applications. Mais c'est assez spécial. Ces sujets ne sont pas couverts par la documentation et vous sont laissés en tant que DBA.
Si vous savez quels privilèges sont nécessaires à votre django, accordez-les simplement comme bon vous semble.
Si vous ne savez pas quels privilèges sont nécessaires, utilisez la procédure suivante :
- Configurez votre projet dans un contexte de développement, en utilisant un utilisateur entièrement autorisé.
- Créez un nouvel utilisateur et n'accordez aucune autorisation
- Changez votre django pour utiliser cet utilisateur
- Démarrez votre application, utilisez ses fonctionnalités et attendez les erreurs SQL.
- Accorder les autorisations nécessaires
Répétez les étapes 4. et 5. tant que tout fonctionne - écrivez toutes les subventions dans un seul fichier sql, pour pouvoir le reproduire plus tard. Bien sûr, vous pouvez accélérer le processus, en accordant des choses à l'avance, si vous savez déjà, que c'est nécessaire.
Vous aurez très probablement besoin
SELECT
dans presque tous les casINSERT
si les utilisateurs doivent pouvoir créer un modèleUPDATE
si les utilisateurs doivent pouvoir modifier un modèleDELETE
si les utilisateurs doivent pouvoir supprimer un modèleREFERENCES
si les utilisateurs créent un modèle avec des contraintes de clé étrangère vers un autre modèle -REFERENCES
est nécessaire pour cet autre modèle.
Ce qui est nécessaire dans le cas de votre candidature est quelque chose que vous seul savez. Peut-être SELECT
est suffisant, lorsque vous fournissez simplement un accès lisible à vos données.
Lorsque vous travaillez de cette manière, vous devez avoir un utilisateur distinct, utilisé pour le déploiement, qui dispose des droits appropriés pour exécuter vos migrations (accorder tous les privilèges dans ce cas est logique). Cela s'applique à chaque version et devrait être automatisé IMO.