postgresql - 为非超级用户安装 PostgreSQL 扩展
问题描述
我的应用程序的数据库有一个像这样具有完全访问权限的专用用户;
CREATE DATABASE "mydb"
WITH OWNER = cloudsqlsuperuser
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_US.UTF8'
LC_CTYPE = 'en_US.UTF8'
CONNECTION LIMIT = -1;
GRANT CONNECT, TEMPORARY ON DATABASE "mydb" TO public;
GRANT ALL ON DATABASE "mydb" TO cloudsqlsuperuser;
GRANT ALL ON DATABASE "mydb" TO "mydb";
在我的应用程序启动时,我有以下查询以确保 UUID 扩展可用;
create extension if not exists "uuid-ossp";
这很好用。但是我最近尝试添加一个相同的查询来创建像这样的“pgcrypto”扩展;
create extension if not exists "pgcrypto";
这未能声称我需要超级用户权限来创建扩展。所以我决定以超级用户的身份手动创建它。但是,即使我在 Adminer 中以 postgres 用户身份登录并成功创建了扩展,它也不能用于我的应用程序(mydb 用户)中的查询。
我不熟悉 PostgreSQL 中使用的命名空间机制,所以我想知道如何创建扩展,以便它可以在我的应用代码中可用,而无需授予应用用户超级用户权限?
解决方案
推荐阅读
- ios - 从推送通知打开视图控制器时如何管理视图层次结构
- python - 在 Python 中最大化数字和 0
- python-3.x - 在 IPython 中运行 Drive API Quickstart 会导致 UserWarning 和无法识别的参数
- java - JDL 导入解析成功,但生成的实体不匹配
- c# - 为什么 mongoDB c# 驱动程序会出现间歇性错误 DnsClient.DnsResponseException: Header id mismatch
- javascript - 使用 jQuery 在页面底部弹出 Cookie
- symfony4 - Symfony4“@ParamConverter 注释找不到对象”404 错误
- java - 为什么在 ExecutorService 中完成的线程比启动的线程少?
- jquery - SQL 数据库:更新表
- python - 在给出起始位置但向后的列表中找到第一个重合的索引