จากเอกสารในส่วนขยาย
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ไหม?