Django membutuhkan akses penuh ke basis data yang mendasarinya, jika Anda ingin menggunakan semua fiturnya seperti migrasi . Oleh karena itu disarankan dalam dokumen untuk memberikan semua hak istimewa.
Ada kasus penggunaan di mana Anda mungkin ingin membatasi akses - mis. jika Anda memiliki skema yang tidak dikelola, yang dibagikan dengan aplikasi lain. Tapi ini cukup istimewa. Topik tersebut tidak tercakup dalam dokumen dan diserahkan kepada Anda sebagai DBA.
Jika Anda tahu hak istimewa mana yang dibutuhkan oleh Django Anda - berikan saja sesuka Anda.
Jika Anda tidak tahu hak istimewa mana yang diperlukan, gunakan prosedur berikut:
- Siapkan proyek Anda dalam konteks pengembangan, menggunakan pengguna penuh.
- Buat pengguna baru, dan jangan berikan izin apa pun
- Ganti django Anda untuk menggunakan pengguna itu
- Mulai aplikasi Anda menggunakan fitur-fiturnya dan tunggu kesalahan SQL.
- Berikan izin yang diperlukan
Ulangi langkah 4. dan 5. selama semuanya berfungsi - tulis semua hibah ke dalam satu file sql, untuk dapat mereproduksinya nanti. Tentu saja Anda bisa mempercepat prosesnya, dengan memberikan barang-barang di depan, jika Anda sudah tahu, bahwa itu diperlukan.
Anda kemungkinan besar akan membutuhkan
SELECT
dalam hampir semua halINSERT
jika pengguna harus dapat membuat modelUPDATE
jika pengguna harus dapat memodifikasi modelDELETE
jika pengguna harus dapat menghapus modelREFERENCES
jika pengguna membuat model dengan batasan kunci asing ke model lain -REFERENCES
diperlukan untuk model lain ini.
Apa yang dibutuhkan dalam kasus aplikasi Anda adalah sesuatu yang hanya Anda yang tahu. Mungkin SELECT
sudah cukup, bila Anda hanya menyediakan akses yang dapat dibaca ke data Anda.
Ketika Anda bekerja seperti itu, Anda harus memiliki pengguna terpisah, yang digunakan untuk penerapan, yang memiliki hak yang tepat untuk menjalankan migrasi Anda (berikan semua hak istimewa dalam hal ini masuk akal). Ini berlaku untuk setiap rilis dan harus menjadi IMO otomatis.