2016-03-22 15 views
-1

Veritabanımdaki hstorları kullanıyorum ve izinlerle ilgili sorun yaşıyorum. yetkili kullanıcı olarak giriş yaparken, tüm iyi çalışır, ancak "normal" bir giriş rolünü kullanırken, bir hstore bir değer seçmek mümkün görünmüyor: kendisi çalışır hstore seçilmesiBir hstore'da bir değer seçmek, "işlev fetchvalı için izin reddedildi" ile sonuçlanır

mydb=> select properties->'foo' from t1; 
ERROR: permission denied for function fetchval 

mydb=> select properties from t1; 
     properties   
---------------------------- 
"baz"=>"foz", "foo"=>"bar" 
(1 row) 

Bu hata için çevrimiçi arama çalıştı, ama sıfır sonuçlar aldık:, yüzden bir tablo erişim izni sorun olarak görünmüyor. Ayrıca, işlev listemde fetchval işlevini bulamıyorum.

cevap

1

fetchval, hstore numaralı telefondan -> operatörüne karşılık gelen işlevdir.

Muhtemelen, ayrıcalıklı olmayan kullanıcılardan hstore işlevlerini yürütme hakkını iptal ettiniz. Örneğin

, hstore uzatma public şemada yaşıyor ve böyle bir şey çalıştırırsanız:

revoke execute on all functions in schema public from public; 

sonra kullanıcıların hstore içeriğini seçmek ama bu hata mesajını almak hakkına sahip olacaktır: ERROR: permission denied for function fetchval zaman -> işlecini uygulamaya çalışıyorum.

Sorunu çözmek için, muhtemelen güvenlik politikanızı yeniden ziyaret etmeniz ve işlevlerdeki izinlerin farklı şekilde ele alınması gerekir.

+0

Bunu bir kez evet yapmış olabilirim. Yine de o fetchval fonksiyonunu görmüyorum. Operatörlere erişimi de verebilir miyim/iptal edebilir miyim? Psql'de –

+0

'\ dx + hstore' tüm işlevleri listeler. Bireysel olarak bence '' fetchval (hstore, text) fonksiyonunu kamuya açık olarak ver, bence işe yarardı ama sanırım her işlevi için bunu yapmak istemezsin. –

+0

Ayrıca, operatörler de kendi izinlerine sahip değiller, temelde çağrı işlevleri için alternatif bir sözdizimi. –

İlgili konular