0

我的应用程序的数据库有一个像这样具有完全访问权限的专用用户;

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 中使用的命名空间机制,所以我想知道如何创建扩展,以便它可以在我的应用代码中可用,而无需授予应用用户超级用户权限?

4

0 回答 0