Dari dokumen tentang Ekstensi,
superuser (boolean) Jika parameter ini benar (yang merupakan default), hanya pengguna super yang dapat membuat ekstensi atau memperbaruinya ke versi baru. Jika disetel ke false, hanya hak istimewa yang diperlukan untuk menjalankan perintah dalam skrip instalasi atau pembaruan yang diperlukan.
Nilai tidak disetel pgcrypto.control
, jadi default ke true yang membutuhkan SuperUser.
Ini berarti Anda tidak dapat CREATE EXTENSION
hanya sebagai pemilik basis data, terlepas dari apa yang dibuat oleh dokumen tentang CREATE EXTENSION yang membuat Anda percaya.
Saya berusaha keras mengaturnya false
, dan tidak ada sukacita. C adalah bahasa yang tidak dipercaya dan Anda akan mendapatkannya
GALAT: izin ditolak karena bahasa c
Dari dokumen di pg_language
Hanya pengguna super yang dapat membuat fungsi dalam bahasa yang tidak terpercaya.
... tentu saja Anda dapat menjadikan c
tepercaya UPDATE pg_language set lanpltrusted = true where lanname = 'c';
sebagai superuser. Kemudian CREATE EXTENSION pgcrypto
akan berfungsi dengan baik sebagai non-superuser. Tapi, itu terdengar seperti ide yang buruk jika Anda harus khawatir tentang pengguna Anda mengunggah sumber ke direktori ekstensi Anda dan kemudian menginstalnya di database. Artinya, saya tidak akan sejauh itu. Saya akan menemukan cara lain untuk menguliti kucing ini.
template1
dan kemudian membuat setiap basis data pengguna daritemplate1
sukaCREATE DATABASE foo OWNER=userfoo TEMPLATE=template1
?