首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres Privileges问题

Postgres Privileges问题
EN

Stack Overflow用户
提问于 2020-05-28 03:49:46
回答 1查看 41关注 0票数 1

我在postgres中设置新用户时遇到了问题,部分原因可能是我对postgres中的幕后工作方式的了解。我使用TestBox和Lucee运行单元测试,在postgres超级用户下一切正常,但在创建新用户并授予权限后,单元测试失败

下面是我的代码:

代码语言:javascript
复制
CREATE USER test_user WITH PASSWORD 'postgres';
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA not_public TO test_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO test_user;
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA public TO test_user;
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA not_public TO test_user;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO test_user;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA not_public TO test_user;

单元测试从引用not_public架构中的表的公共架构中运行一个过程,但会立即出错,并显示以下消息:

代码语言:javascript
复制
 ERROR: permission denied for schema not_public Where: PL/pgSQL function p_unit__delete_test_production() line 18 at SQL statement

我为新用户/被授权者运行了以下命令:

代码语言:javascript
复制
SELECT table_catalog, table_schema, table_name, privilege_type
FROM information_schema.table_privileges

并且该过程中引用的所有模式的所有表都具有select、insert、update和delete权限。是不是我的奖励金漏掉了什么?这是其他东西的问题吗?如有任何帮助,我们不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-28 04:59:34

试一试

代码语言:javascript
复制
GRANT USAGE ON SCHEMA not_public TO test_user;

请注意,错误消息permission denied for schema not_public位于模式本身,而不是模式内的特定对象。

此外,GRANT ... ON ALL ... IN SCHEMA...只适用于该模式中已经存在的对象,这是与postgres的GRANT命令混淆的常见原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62051677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档