Postgres 权限问题
Postgres Privileges issue
我在 postgres 中设置新用户时遇到问题,部分原因可能是我对 postgres 幕后工作原理的了解。我正在使用 TestBox 和 Lucee 进行 运行 单元测试,在 postgres 超级用户下一切都按预期工作,但在创建新用户和 g运行ted 权限后,单元测试失败
这是我的代码:
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;
单元测试 运行 是 public 架构中的一个过程,它引用 not_public 架构中的表,但立即出错并显示以下消息:
ERROR: permission denied for schema not_public Where: PL/pgSQL function p_unit__delete_test_production() line 18 at SQL statement
我运行以下为新user/grantee:
SELECT table_catalog, table_schema, table_name, privilege_type
FROM information_schema.table_privileges
并且过程中引用的所有模式的所有表都具有 select、插入、更新、删除权限。我的 g运行ts 中是否缺少一个步骤?这是其他问题吗?感谢您的帮助!
尝试
GRANT USAGE ON SCHEMA not_public TO test_user;
请注意,错误消息 permission denied for schema not_public
是关于架构本身的,而不是关于架构内的特定对象的。
此外 GRANT ... ON ALL ... IN SCHEMA...
仅适用于该架构中已存在的对象,这是与 postgres 的 GRANT 命令混淆的常见原因。
我在 postgres 中设置新用户时遇到问题,部分原因可能是我对 postgres 幕后工作原理的了解。我正在使用 TestBox 和 Lucee 进行 运行 单元测试,在 postgres 超级用户下一切都按预期工作,但在创建新用户和 g运行ted 权限后,单元测试失败
这是我的代码:
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;
单元测试 运行 是 public 架构中的一个过程,它引用 not_public 架构中的表,但立即出错并显示以下消息:
ERROR: permission denied for schema not_public Where: PL/pgSQL function p_unit__delete_test_production() line 18 at SQL statement
我运行以下为新user/grantee:
SELECT table_catalog, table_schema, table_name, privilege_type
FROM information_schema.table_privileges
并且过程中引用的所有模式的所有表都具有 select、插入、更新、删除权限。我的 g运行ts 中是否缺少一个步骤?这是其他问题吗?感谢您的帮助!
尝试
GRANT USAGE ON SCHEMA not_public TO test_user;
请注意,错误消息 permission denied for schema not_public
是关于架构本身的,而不是关于架构内的特定对象的。
此外 GRANT ... ON ALL ... IN SCHEMA...
仅适用于该架构中已存在的对象,这是与 postgres 的 GRANT 命令混淆的常见原因。