我有一个 PostgreSQL 9.5 服务器,上面有自动为用户创建角色和数据库的脚本。在这些数据库中,启用特定扩展(例如 pgcrypto)会很有帮助,但据我了解,必须是超级用户才能运行CREATE EXTENSION
. 有没有办法在不使用超级用户帐户手动登录的情况下启用此类扩展?
我有一个 PostgreSQL 9.5 服务器,上面有自动为用户创建角色和数据库的脚本。在这些数据库中,启用特定扩展(例如 pgcrypto)会很有帮助,但据我了解,必须是超级用户才能运行CREATE EXTENSION
. 有没有办法在不使用超级用户帐户手动登录的情况下启用此类扩展?
从有关扩展的文档中,
该值未在 中设置
pgcrypto.control
,因此默认为 true,这需要超级用户。这意味着您不能
CREATE EXTENSION
仅仅作为数据库的所有者,尽管CREATE EXTENSION上的文档让您相信。我努力将其设置为
false
,但没有任何乐趣。C 是一种不受信任的语言,你会得到来自pg_language 上的文档
...当然,您可以作为超级用户
c
信任。UPDATE pg_language set lanpltrusted = true where lanname = 'c';
然后CREATE EXTENSION pgcrypto
将作为非超级用户正常工作。但是,如果您不得不担心您的用户将源上传到您的扩展目录然后将其安装到数据库中,这听起来是个坏主意。也就是说,我不会走那么远。我会想办法给这只猫剥皮。