Veritabanının tüm tablolarına erişim izni verme


13

Son zamanlarda bir sunucunun bir kullanıcısıyla düzenli erişim haklarını paylaşmak istedim ve basit CREATE USERve GRANT ALL ON DATABASEkomutların SELECTveriler üzerinde basit çalışmasına izin vermediğini fark ettim .

Belirli bir veritabanından belirli bir kullanıcıya tüm tablolara hak vermek istiyorum, ancak publicbir tür ayrıcalığa izin verip vermeyeceğini bilmediğim için ona tüm şemaya erişim izni vermenin en iyi fikir olup olmadığından emin değilim tartışma. Başka yolu var mı?


Neden sadece yapmıyorsun GRANT SELECT ON TableName TO [Domain\User]? db_datareaderİhtiyaç duydukları tek şey tüm tablolara okuma erişimi ise , genellikle rol için kullanıcıları atarım, ancak ne kadar ayrıntılı olmak istediğinizden emin değilim.
Kris Gruttemeyer

Veritabanındaki tüm tablolara tüm CRUD'ları vermek istiyorum. Ayrıca, bu veritabanı içinde DROPping ve CREATEing de yararlı olabilir.
d33tah

Yanıtlar:


20

Ayrıcalık DATABASEyalnızca veritabanına genel bağlantı hakları verir, başka bir şey yapmaz. Sadece bu ayrıcalığa sahip bir kullanıcı yalnızca genel halkın görmesine izin verilenleri görebilir.

Tüm tablolara okuma erişimi vermek için , tüm şemalarda ve tablolarda da ayrıcalıklara ihtiyacınız vardır:

GRANT USAGE ON SCHEMA public TO myuser; -- more schemas?
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Gelecekteki şemalar ve tablolar için varsayılan ayrıcalıklar ayarlamak da isteyebilirsiniz . DB'nizde nesne oluşturan her rol için çalıştırın

ALTER DEFAULT PRIVILEGES FOR ROLE mycreating_user IN SCHEMA public
GRANT SELECT ON TABLES TO myuser;

Ama önce tüm konsepti gerçekten anlamalısınız .
Grup rollerinde ayrıcalıkları bir araya getirmek ve daha sonra grup rolünü kullanıcı rollerine / rollerinden vermek / iptal etmek neredeyse her zaman daha iyidir. İlişkili:


myusrbir yazım hatası? Olmamalı mı myuser?
attomos

1
@attomos: Örnekte farklı bir kullanıcı olması gerekiyordu. Açıkladım.
Erwin Brandstetter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.