З документів про розширення,
суперусер (булевий) Якщо цей параметр є істинним (за замовчуванням), лише суперпользователи можуть створити розширення або оновити його до нової версії. Якщо встановлено значення false, потрібні лише права, необхідні для виконання команд у сценарії встановлення чи оновлення.
Значення не встановлено pgcrypto.control
, тому воно за замовчуванням відповідає справжньому, для чого потрібен SuperUser.
Це означає, що ви не можете бути CREATE EXTENSION
простим власником бази даних, незважаючи на те, що документи про CREATE EXTENSION змушують вас повірити.
Я дуже намагався налаштувати це false
, і ніякої радості. С - це ненадійна мова, і ви отримаєте
ПОМИЛКА: дозвіл відмовлено в мові c
Від документів на pg_language
Лише суперкористувачі можуть створювати функції в ненадійних мовах.
... звичайно, ви можете c
довіряти собі UPDATE pg_language set lanpltrusted = true where lanname = 'c';
як суперпользователя. Тоді CREATE EXTENSION pgcrypto
буде добре працювати як не-суперпользователь. Але це звучить як погана ідея, якщо вам доведеться турбуватися про те, щоб ваші користувачі завантажили джерело до каталогу розширень, а потім встановили його в базі даних. Тобто я б не пішов так далеко. Я знайшов би інший спосіб зіштувати цю кішку.
template1
а потім створити кожну базу даних користувачів наtemplate1
зразокCREATE DATABASE foo OWNER=userfoo TEMPLATE=template1
?