Từ các tài liệu trên Phần mở rộng,
superuser (boolean) Nếu tham số này là đúng (là mặc định), chỉ siêu nhân mới có thể tạo tiện ích mở rộng hoặc cập nhật lên phiên bản mới. Nếu nó được đặt thành false, chỉ cần các đặc quyền cần thiết để thực thi các lệnh trong tập lệnh cài đặt hoặc cập nhật là bắt buộc.
Giá trị không được đặt pgcrypto.control
, vì vậy nó mặc định là true, yêu cầu SuperUser.
Điều này có nghĩa là bạn không thể CREATE EXTENSION
là chủ sở hữu của cơ sở dữ liệu, mặc dù những gì các tài liệu về TẠO RA TUYỆT VỜI khiến bạn tin tưởng.
Tôi đã cố gắng thiết lập nó false
, và không có niềm vui. C là một ngôn ngữ không đáng tin cậy và bạn sẽ nhận được
LRI: quyền bị từ chối cho ngôn ngữ c
Từ các tài liệu trên pg_lingu
Chỉ siêu nhân mới có thể tạo chức năng trong các ngôn ngữ không tin cậy.
... Tất nhiên bạn có thể c
tin tưởng UPDATE pg_language set lanpltrusted = true where lanname = 'c';
như một siêu người dùng. Sau đó CREATE EXTENSION pgcrypto
sẽ hoạt động tốt như một người không siêu. Nhưng, điều đó nghe có vẻ là một ý tưởng tồi nếu bạn phải lo lắng về việc người dùng của mình tải nguồn lên thư mục tiện ích mở rộng và sau đó cài đặt nó vào cơ sở dữ liệu. Điều đó có nghĩa là, tôi sẽ không đi xa đến thế. Tôi sẽ tìm một cách khác để lột da con mèo này.
template1
và sau đó tạo từng cơ sở dữ liệu người dùng từtemplate1
như thếCREATE DATABASE foo OWNER=userfoo TEMPLATE=template1
nào chưa?