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