Django necesita acceso completo a la base de datos subyacente, si desea utilizar todas sus características como migraciones . Por lo tanto, se recomienda en los documentos otorgar todos los privilegios.
Hay casos de uso en los que es posible que desee restringir el acceso, p. si tiene un esquema no administrado, que se comparte con otras aplicaciones. Pero esto es bastante especial. Esos temas no están cubiertos por los documentos y se los dejo a usted como DBA.
Si sabe qué privilegios necesita su django, concédalos como desee.
Si no sabe qué privilegios se necesitan, use el siguiente procedimiento:
- Configure su proyecto en el contexto de desarrollo, utilizando un usuario autorizado completo.
- Cree un nuevo usuario y no otorgue ningún permiso
- Cambia tu django para usar ese usuario
- Inicie su aplicación, use sus funciones y espere los errores de SQL.
- Otorgue los permisos necesarios
Repita los pasos 4 y 5 mientras todo funcione:escriba todas las concesiones en un archivo sql para poder reproducir esto más tarde. Por supuesto, puede acelerar el proceso otorgando cosas por adelantado, si ya sabe, que son necesarias.
Lo más probable es que necesite
SELECT
en casi cualquier casoINSERT
si los usuarios deberían poder crear un modeloUPDATE
si los usuarios deberían poder modificar un modeloDELETE
si los usuarios deberían poder eliminar un modeloREFERENCES
si los usuarios crean un modelo con restricciones de clave externa a otro modelo -REFERENCES
se necesita para este otro modelo.
Lo que se necesita en el caso de su solicitud es algo que solo usted sabe. Quizás SELECT
es suficiente, cuando solo proporciona acceso legible a sus datos.
Cuando trabaja así, debe tener un usuario separado, utilizado para la implementación, que tenga los derechos adecuados para ejecutar sus migraciones (conceder todos los privilegios en este caso tiene sentido). Esto se aplica a cada versión y debe automatizarse en mi opinión.