小编Dan*_*y C的帖子

GRANT USAGE ON SCHEMA 不会执行任何操作

无论出于何种原因,我们的数据库不尊重 GRANT 命令。以下是新创建用户的示例。

pddbtest=> create user test_user login;
CREATE ROLE
Run Code Online (Sandbox Code Playgroud)

然后验证用户还没有架构权限

pddbtest=> SELECT rolname, has_schema_privilege(rolname, 'public', 'usage') from pg_roles where rolname='test_user';
  rolname  | has_schema_privilege
-----------+----------------------
 test_user | f
(1 row)
Run Code Online (Sandbox Code Playgroud)

然后授予许可

pddbtest=> grant usage on schema public to test_user;
GRANT
Run Code Online (Sandbox Code Playgroud)

然后读取权限现在是否存在(不存在)

pddbtest=> SELECT rolname, has_schema_privilege(rolname, 'public', 'usage') from pg_roles where rolname='test_user';
  rolname  | has_schema_privilege
-----------+----------------------
 test_user | f
(1 row)
Run Code Online (Sandbox Code Playgroud)

即使授予架构权限后(不会返回任何错误),数据库仍然会认为该权限未授予。(如果我之后在架构中的所有表上添加选择授权,则在尝试查询任何表时仍然会收到架构权限被拒绝的错误)

(搜索路径是“$user”,如果该信息相关则公开)

编辑:这是 SELECT version() 的输出;和 \dn+ 根据要求:

PostgreSQL 10.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.9.3, 64-bit


                             List of …
Run Code Online (Sandbox Code Playgroud)

postgresql

2
推荐指数
1
解决办法
3万
查看次数

标签 统计

postgresql ×1