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
SELECTi nästan alla fallINSERTom användare ska kunna skapa en modellUPDATEom användare ska kunna ändra en modellDELETEom användare ska kunna ta bort en modellREFERENCESom användare skapar en modell med främmande nyckelbegränsningar till en annan modell -REFERENCESbehö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.