GRANTs pada objek yang berbeda terpisah. GRANTing pada database tidak GRANTberhak atas skema di dalamnya. Demikian pula, GRANTmenggunakan skema tidak memberikan hak atas tabel di dalamnya.
Jika Anda memiliki hak untuk SELECTdari tabel, tetapi tidak memiliki hak untuk melihatnya dalam skema yang memuatnya maka Anda tidak dapat mengakses tabel.
Uji hak dilakukan dengan urutan:
Do you have `USAGE` on the schema?
No: Reject access.
Yes: Do you also have the appropriate rights on the table?
No: Reject access.
Yes: Check column privileges.
Kebingungan Anda mungkin timbul dari kenyataan bahwa publicskema memiliki default GRANTsemua hak atas peran public, di mana setiap pengguna / grup adalah anggotanya. Jadi setiap orang sudah menggunakan skema itu.
Frasa:
(dengan asumsi bahwa persyaratan hak istimewa objek juga terpenuhi)
Mengatakan bahwa Anda harus memiliki USAGEskema untuk menggunakan objek di dalamnya, tetapi memiliki USAGEskema tidak dengan sendirinya cukup untuk menggunakan objek dalam skema, Anda juga harus memiliki hak atas objek itu sendiri.
Ini seperti pohon direktori. Jika Anda membuat direktori somedirdengan file somefiledi dalamnya kemudian mengaturnya sehingga hanya pengguna Anda sendiri yang dapat mengakses direktori atau file (mode rwx------pada dir, mode rw-------pada file) maka tidak ada orang lain yang dapat membuat daftar direktori untuk melihat bahwa file tersebut ada.
Jika Anda memberikan hak membaca dunia atas file (mode rw-r--r--) tetapi tidak mengubah izin direktori, tidak ada bedanya. Tidak ada yang dapat melihat file untuk membacanya, karena mereka tidak memiliki hak untuk mencantumkan direktori.
Jika Anda malah menyetel rwx-r-xr-xpada direktori, menyetelnya sehingga orang dapat membuat daftar dan melintasi direktori tetapi tidak mengubah izin file, orang dapat membuat daftar file tetapi tidak dapat membacanya karena mereka tidak memiliki akses ke file.
Anda perlu menyetel kedua izin agar orang benar-benar dapat melihat file tersebut.
Hal yang sama di Pg. Anda memerlukan USAGEhak skema dan hak objek untuk melakukan tindakan pada objek, seperti SELECTdari tabel.
(Analoginya jatuh sedikit di yang PostgreSQL tidak memiliki keamanan tingkat baris lagi, jadi pengguna masih bisa "melihat" bahwa tabel ada dalam skema oleh SELECTing dari pg_classlangsung. Mereka tidak bisa berinteraksi dengan cara apapun , meskipun, jadi hanya bagian "daftar" yang tidak persis sama.)
CREATE EXTENSION. Ini kurang lebih masalah yang sama dengan file yang dibuat di Linux saat Andasu. Akan lebih baik jika ada semacamsudo -epernyataan for di pqsl.