З документів про розширення,
суперусер (булевий) Якщо цей параметр є істинним (за замовчуванням), лише суперпользователи можуть створити розширення або оновити його до нової версії. Якщо встановлено значення 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?