จากเอกสารในส่วนขยาย
superuser (บูลีน) หากพารามิเตอร์นี้เป็นจริง (ซึ่งเป็นค่าเริ่มต้น) เฉพาะผู้ใช้ระดับสูงเท่านั้นที่สามารถสร้างส่วนขยายหรืออัปเดตเป็นเวอร์ชันใหม่ได้ หากตั้งค่าเป็นเท็จจำเป็นต้องใช้สิทธิ์พิเศษในการดำเนินการคำสั่งในการติดตั้งหรือสคริปต์การอัพเดท
ค่าไม่ถูกตั้งค่าpgcrypto.control
ดังนั้นจึงเป็นค่าเริ่มต้นเป็นจริงซึ่งต้องใช้ SuperUser
ซึ่งหมายความว่าคุณไม่สามารถCREATE EXTENSION
เป็นเจ้าของฐานข้อมูลได้เพียงอย่างเดียวแม้ว่าเอกสารบนCREATE EXTENSION จะทำให้คุณเชื่อ
ฉันพยายามอย่างหนักเพื่อตั้งค่าfalse
และไม่มีความสุข C เป็นภาษาที่ไม่น่าเชื่อถือและคุณจะได้รับ
ข้อผิดพลาด: การอนุญาตถูกปฏิเสธสำหรับภาษา c
จากเอกสารใน pg_language
เฉพาะผู้ใช้ระดับสูงเท่านั้นที่สามารถสร้างฟังก์ชั่นในภาษาที่ไม่น่าเชื่อถือ
... แน่นอนคุณสามารถc
เชื่อถือได้UPDATE pg_language set lanpltrusted = true where lanname = 'c';
ในฐานะผู้ใช้ขั้นสูง จากนั้นCREATE EXTENSION pgcrypto
จะทำงานได้ดีในฐานะที่ไม่ใช่ผู้ใช้ superuser แต่ดูเหมือนว่าเป็นความคิดที่ไม่ดีถ้าคุณต้องกังวลเกี่ยวกับผู้ใช้ที่อัปโหลดแหล่งข้อมูลไปยังไดเรกทอรีส่วนขยายแล้วติดตั้งในฐานข้อมูล กล่าวคือฉันจะไม่ไปไกลขนาดนั้น ฉันจะหาวิธีอื่นในการดูแลแมวตัวนี้
template1
แล้วสร้างฐานข้อมูลผู้ใช้แต่ละคนจากtemplate1
ไลค์CREATE DATABASE foo OWNER=userfoo TEMPLATE=template1
ไหม?