我在 postgres 中设置新用户时遇到问题,部分原因可能是我对 postgres 幕后工作方式的了解。我正在使用 TestBox 和 Lucee 运行单元测试,并且在 postgres 超级用户下一切正常,但是在创建新用户并授予权限后,单元测试失败
这是我的代码:
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 模式中的表,但立即出错并显示以下消息:
ERROR: permission denied for schema not_public Where: PL/pgSQL function p_unit__delete_test_production() line 18 at SQL statement
我为新用户/被授予者运行了以下内容:
SELECT table_catalog, table_schema, table_name, privilege_type
FROM information_schema.table_privileges
并且该过程中引用的所有模式的所有表都具有选择、插入、更新、删除权限。我的赠款中是否缺少步骤?这是其他问题吗?任何帮助表示赞赏!