Django potrzebuje pełnego dostępu do podstawowej bazy danych, jeśli chcesz korzystać ze wszystkich jego funkcji, takich jak migracje . Dlatego zaleca się w dokumentacji, aby przyznać wszystkie uprawnienia.
Istnieją przypadki użycia, w których możesz chcieć ograniczyć dostęp - np. jeśli masz niezarządzany schemat, który jest udostępniany innym aplikacjom. Ale to jest wyjątkowe. Te tematy nie są objęte dokumentacją i pozostawione Tobie jako administratorowi danych.
Jeśli wiesz, jakich uprawnień potrzebuje Twoje django - po prostu nadaj je tak, jak chcesz.
Jeśli nie wiesz, jakie uprawnienia są potrzebne, zastosuj następującą procedurę:
- Skonfiguruj swój projekt w kontekście programistycznym, korzystając z pełnoprawnego użytkownika.
- Utwórz nowego użytkownika i nie udzielaj żadnych uprawnień
- Przełącz swoje django, aby używało tego użytkownika
- Uruchom aplikację, korzystaj z jej funkcji i poczekaj na błędy SQL.
- Przyznaj niezbędne uprawnienia
Powtarzaj kroki 4. i 5. dopóki wszystko działa - zapisz wszystkie granty w jednym pliku sql, aby móc je później odtworzyć. Oczywiście możesz przyspieszyć ten proces, przyznając rzeczy z góry, jeśli już wiesz, że jest to potrzebne.
Najprawdopodobniej będziesz potrzebować
SELECT
w prawie każdym przypadkuINSERT
czy użytkownicy powinni być w stanie stworzyć modelUPDATE
czy użytkownicy powinni mieć możliwość modyfikowania modeluDELETE
czy użytkownicy powinni mieć możliwość usunięcia modeluREFERENCES
jeśli użytkownicy tworzą model z ograniczeniami klucza obcego do innego modelu -REFERENCES
jest potrzebny do tego innego modelu.
To, co jest potrzebne w przypadku Twojej aplikacji, to coś, o czym wiesz tylko Ty. Może SELECT
wystarczy, gdy po prostu zapewnisz czytelny dostęp do swoich danych.
Kiedy pracujesz w ten sposób, powinieneś mieć osobnego użytkownika, używanego do wdrożenia, który ma odpowiednie uprawnienia do wykonywania twoich migracji (nadanie wszystkich uprawnień w tym przypadku ma sens). Dotyczy to każdego wydania i powinno być zautomatyzowane IMO.