Django har brug for fuld adgang til den underliggende database, hvis du vil bruge alle dens funktioner såsom migrationer . Derfor anbefales det i dokumenterne at give alle privilegier.
Der er use cases, hvor du måske ønsker at begrænse adgangen – f.eks. hvis du har et ikke-administreret skema, som deles med andre apps. Men det her er ret specielt. Disse emner er ikke dækket af dokumenterne og overladt til dig som DBA.
Hvis du ved, hvilke privilegier din django har brug for - giv dem bare, som du kan lide det.
Hvis du ikke ved, hvilke rettigheder der er nødvendige, skal du bruge følgende procedure:
- Konfigurer dit projekt i udviklingssammenhæng ved hjælp af en fuldgyldig bruger.
- Opret en ny bruger, og giv ikke nogen tilladelser
- Skift din django til at bruge den bruger
- Start dit program, brug dets funktioner og vent på SQL-fejl.
- Giv de nødvendige tilladelser
Gentag trin 4. og 5. så længe alt virker - skriv alle grants i én sql-fil, for at kunne gengive dette senere. Selvfølgelig kan du accelerere processen ved at give ting foran, hvis du allerede ved, at det er nødvendigt.
Du får sandsynligvis brug for
SELECT
i næsten alle tilfældeINSERT
hvis brugerne skulle kunne oprette en modelUPDATE
hvis brugere skal kunne ændre en modelDELETE
hvis brugere skulle kunne slette en modelREFERENCES
hvis brugere opretter en model med fremmednøgle-begrænsninger til en anden model -REFERENCES
er nødvendig for denne anden model.
Det, der er nødvendigt i tilfælde af din ansøgning, er noget, som kun du ved. Måske SELECT
er nok, når du blot giver læsbar adgang til dine data.
Når du arbejder sådan, bør du have en separat bruger, der bruges til udrulning, som har de rette rettigheder til at udføre dine migreringer (giv alle privilegier i dette tilfælde giver mening). Dette gælder for hver udgivelse og bør være automatiseret IMO.