Nasıl PostgreSQL içinde salt okunur bir kullanıcı oluşturmak mı
Sadece belirli bir veritabanı Seçer yapabileceği PostgreSQL bir kullanıcı oluşturmak istiyorum. MySQL komutu
GRANT SELECT ON mydb.* TO 'xxx'@'%' IDENTIFIED BY 'yyy';
PostgreSQL komutları eşdeğer veya komut dizisi nedir?
Denedim...
postgres=# CREATE ROLE xxx LOGIN PASSWORD 'yyy';
postgres=# GRANT SELECT ON DATABASE mydb TO xxx;
Ama bir DB üzerinde verebilirsiniz tek şey OLUŞTUR, BAĞLAN, GEÇİCİ ve GEÇİCİ olduğunu görünür.
CEVAP
Grant kullanım/tek bir masa seçin
Eğer sadece grant, bir veritabanına BAĞLANMAK, kullanıcı bağlanabilir, ancak başka bir ayrıcalığı yok. Ad (şemalar) KULLANIM izni vermek ve böyle ayrı ayrı: tablolar ve görünümler SEÇİN
GRANT CONNECT ON DATABASE mydb TO xxx;
-- This assumes you're actually connected to mydb..
GRANT USAGE ON SCHEMA public TO xxx;
GRANT SELECT ON mytable TO xxx;
Birden fazla tablo/görünümler (PostgreSQL 9.0 )
PostgreSQL son sürümleri, tüm tablolar/ya da yazmak zorunda kalmak yerine şema tek bir komut kullanarak onları tek tek görüş/etc: izinleri verebilirsiniz
GRANT SELECT ON ALL TABLES IN SCHEMA public TO xxx;
Bu sadece önceden oluşturulmuş tablolar etkiler. Daha güçlü, otomatik olarak gelecekte default roles assigned to new objects olabilir:
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO xxx;
Ayrıca amir kullanıcının üye olduğu herhangi bir rolü ayarlanabilir olmasına rağmen. varsayılan olarak, bu sadece nesneleri (tablolar) bu komutu veren kullanıcı tarafından oluşturulan etkileyeceğini unutmayın: Ancak, yeni nesneleri oluştururken üyesi olduğunuz tüm roller için varsayılan ayrıcalıkları almak değil... hala bazı faffing etrafında var. Eğer bir veritabanı sahibi bir rolü vardır, ve şema değiştiren rol sahibi olarak gerçekleştirilen yaklaşımı benimserseniz, o zaman sahibi rolü için varsayılan ayrıcalıkları atamak gerekir. IMHO bu biraz kafa karıştırıcı bir durum ve deney için fonksiyonel bir iş akışı ile gelip gerekebilir.
Birden fazla Tablo görünümleri (9.0 önce PostgreSQL sürümleri)/
Uzun hataları önlemek için, çoklu masa değişiklikler, aşağıdaki kullanımı tavsiye 'otomatik' her masa için GRANT SELECT
gerekli oluşturmak için süreci görmek/:
SELECT 'GRANT SELECT ON ' || relname || ' TO xxx;'
FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
WHERE nspname = 'public' AND relkind IN ('r', 'v', 'S');
Bu kopyala-n-yapıştır aşk için kamu tüm tablolar, görünümler ve dizileri VERMEK SEÇMEK için ilgili HİBE komutları çıktı. Doğal olarak, bu sadece zaten oluşturulmuş olan tablolar için uygulanır.
Nasıl ASP.NET MVC3 Razor " salt okunur...
Alan salt okunur yapmak için Nasıl dja...
bir uygulama içinde kullanıcı adı/paro...
Nasıl bir PostgreSQL '' sorg...
Nasıl Windows Powershell içinde geçerl...