Django behöver full tillgång till den underliggande databasen om du vill använda alla dess funktioner som migrationer . Därför rekommenderas det i dokumenten att bevilja alla privilegier.
Det finns användningsfall där du kanske vill begränsa åtkomsten - t.ex. om du har ett ohanterat schema, som delas med andra appar. Men det här är ganska speciellt. Dessa ämnen täcks inte av dokumenten och lämnas åt dig som DBA.
Om du vet vilka privilegier som behövs av din django - ge dem bara som du vill.
Om du inte vet vilka behörigheter som behövs, använd följande procedur:
- Ställ in ditt projekt i utvecklingssammanhang med hjälp av en fullständigt beviljad användare.
- Skapa en ny användare och ge inga behörigheter
- Byt din django för att använda den användaren
- Starta ditt program med dess funktioner och vänta på SQL-fel.
- Ge nödvändiga behörigheter
Upprepa steg 4. och 5. så länge allt fungerar - skriv alla grants i en sql-fil, för att kunna återskapa detta senare. Naturligtvis kan du påskynda processen genom att ge saker framför dig, om du redan vet att det behövs.
Du kommer förmodligen att behöva
SELECT
i nästan alla fallINSERT
om användare ska kunna skapa en modellUPDATE
om användare ska kunna ändra en modellDELETE
om användare ska kunna ta bort en modellREFERENCES
om användare skapar en modell med främmande nyckelbegränsningar till en annan modell -REFERENCES
behövs för denna annan modell.
Vad som behövs vid din ansökan är något bara du vet. Kanske SELECT
räcker när du bara ger läsbar åtkomst till dina data.
När du arbetar så, bör du ha en separat användare, som används för distribution, som har rätt rättigheter att utföra dina migreringar (ge alla privilegier i det här fallet är vettigt). Detta gäller för varje release och bör vara automatiserad IMO.