Django heeft volledige toegang tot de onderliggende database nodig als je alle functies wilt gebruiken, zoals migraties . Daarom wordt in de documenten aanbevolen om alle rechten toe te kennen.
Er zijn gevallen waarin u de toegang misschien wilt beperken - b.v. als je een onbeheerd schema hebt, dat wordt gedeeld met andere apps. Maar dit is best bijzonder. Deze onderwerpen worden niet behandeld in de documenten en worden voor u overgelaten als de DBA.
Als je weet welke privileges je django nodig heeft, verleen ze dan zoals je wilt.
Als u niet weet welke privileges nodig zijn, gebruikt u de volgende procedure:
- Stel uw project op in ontwikkelingscontext, met behulp van een volledig toegewezen gebruiker.
- Maak een nieuwe gebruiker aan en verleen geen rechten
- Schakel je django in om die gebruiker te gebruiken
- Start uw toepassing, gebruik de functies en wacht op SQL-fouten.
- Verleen de benodigde rechten
Herhaal stap 4. en 5. zolang alles werkt - schrijf alle subsidies in één sql-bestand, om dit later te kunnen reproduceren. Natuurlijk kun je het proces versnellen door dingen van tevoren toe te kennen, als je al weet dat het nodig is.
Je hebt hoogstwaarschijnlijk
SELECT
in bijna ieder gevalINSERT
of gebruikers een model moeten kunnen makenUPDATE
of gebruikers een model moeten kunnen wijzigenDELETE
of gebruikers een model moeten kunnen verwijderenREFERENCES
als gebruikers een model maken met externe sleutelbeperkingen voor een ander model -REFERENCES
hiervoor is een ander model nodig.
Wat nodig is in het geval van uw aanvraag, is iets dat alleen u weet. Misschien SELECT
is voldoende, wanneer u alleen leesbare toegang tot uw gegevens geeft.
Als je zo werkt, zou je een aparte gebruiker moeten hebben, gebruikt voor implementatie, die de juiste rechten heeft om je migraties uit te voeren (alle privileges verlenen in dit geval is logisch). Dit geldt voor elke release en zou IMO geautomatiseerd moeten zijn.