Django се нуждае от пълен достъп до основната база данни, ако искате да използвате всички нейни функции като миграции . Затова се препоръчва в документите да се предоставят всички привилегии.
Има случаи на употреба, в които може да искате да ограничите достъпа - напр. ако имате неуправляема схема, която се споделя с други приложения. Но това е доста специално. Тези теми не са обхванати от документите и са оставени за вас като DBA.
Ако знаете кои привилегии са необходими на вашия django - просто ги дайте, както желаете.
Ако не знаете кои привилегии са необходими, използвайте следната процедура:
- Настройте проекта си в контекст на разработка, като използвате пълноправен потребител.
- Създайте нов потребител и не давайте никакви разрешения
- Превключете вашето django, за да използвате този потребител
- Стартирайте приложението си, използвайте функциите му и изчакайте SQL грешки.
- Дайте необходимите разрешения
Повторете стъпка 4. и 5., докато всичко работи - запишете всички грантове в един sql файл, за да можете да възпроизведете това по-късно. Разбира се, можете да ускорите процеса, като предоставите неща отпред, ако вече знаете, че са необходими.
Най-вероятно ще имате нужда от
SELECT
в почти всеки случайINSERT
ако потребителите трябва да могат да създават моделUPDATE
ако потребителите трябва да могат да променят моделDELETE
дали потребителите трябва да могат да изтрият моделREFERENCES
ако потребителите създадат модел с ограничения на външен ключ към друг модел -REFERENCES
е необходим за този друг модел.
Какво е необходимо в случай на кандидатстване е нещо, което само вие знаете. Може би SELECT
е достатъчно, когато просто предоставите четим достъп до вашите данни.
Когато работите по този начин, трябва да имате отделен потребител, използван за внедряване, който има правилните права за изпълнение на вашите миграции (даването на всички привилегии в този случай има смисъл). Това важи за всяко издание и трябва да бъде автоматизирано IMO.