暂无图片
已经回收了模式public的usage权限,但是仍能访问public下的表tt,这个哪里错了?
我来答
分享
暂无图片 匿名用户
已经回收了模式public的usage权限,但是仍能访问public下的表tt,这个哪里错了?

(postgres@[local]:5432)-[mydb]-#revoke USAGE ON SCHEMA public from readonly;
REVOKE
(postgres@[local]:5432)-[mydb]-#revoke select on all tables in schema public from readonly;
REVOKE
(postgres@[local]:5432)-[mydb]-#grant select on all tables in schema public to readonly;


(readonly@[local]:5432)-[mydb]->select * from tt limit 1;
id
----
1
(1 row)

(readonly@[local]:5432)-[mydb]->\d tt
Table "public.tt"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer |

那这个模式的usage权限,该如何理解?     

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
周波

  usage权限表示允许访问模式中包含的对象。如果没有此权限,仍可以看到对象名称,例如通过查询系统目录:

select relname,relkind from pg_class where relnamespace = (select oid from pg_namespace where nspname='public';

复制

  如果你观察仔细,你会通过psql的\dn+命令发现,public模式下存在这样一条授权信息:’=UC/postgres’,这表示对于数据库中所有用户,默认在public模式上具有usage和create权限,当你执行第一条SQL收回用户readonly在public上的usage权限,看似执行成功,其实啥也没干,这条SQL试图去删掉public模式上这样的一条授权信息:“readonly=U/postgres”,但public模式上原来也不存在这样的授权信息。
  如果你想要撤回某个用户在public模式上的usage权限,应该使用如下语句(语句中的public表示一种特殊的“角色”,可以用来向系统中的每一个角色授予一个权限):

revoke usage on schema public from public;
复制
暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
PostgreSQL 可视化监控工具
回答 2
简单的pgadmin就够用复杂的可以考虑zabbixpromtheus上云的话就多了,云商都自带
pg -12 ,中普通的单表,如何在线执行ddl?
回答 2
\df informationschema.routines表或  pgproc表 
postgresql 分区表有没有缺点或者缺陷?
回答 1
已采纳
万事有利就有弊,分区表各个版本都有不同的使用限制:例如PG11分区表有如下限制允许创建全局的主键、唯一约束,但必须包含分区键。允许创建全局的外键,不允许创建排他约束。允许创建全局索引,全局唯一索引必须
pg中16进制转换成10进制的方法
回答 1
是按int4还是uint4的规则?还是按float4的规则?如果是按int4,则可以使用以下算法createfunctionbytea2int4(bytea)returnsint4immutablea
postgresql升级后只能重装所有插件吗?
回答 1
是的
pg_rman的异机恢复的操作过程?
回答 1
目标机器安装相同版本PostgreSQL和pgrman。复制备份文件到目标机器。设置PGDATA和PGRMAN变量,检查备份完整性。使用pgrmanrestore执行恢复。确保restorecomma
postgreSQL 有时间段合并的函数吗?
回答 1
是的,PostgreSQL有时间段合并的函数。您可以使用datetrunc函数来实现这一点。例如,如果您想要将一个时间戳截断为天,您可以使用以下查询:SELECTdatetrunc('day',tim
postgreSQL pg auto failover 还是 repmgr 还是 patroni 好?
回答 1
各有各的好,patroni更加完善一些
实现postgresql主从自动切换使用keepalived 和 repmgr 哪个更好
回答 1
已采纳
keepalived基本不需要业务层面做任何事情,就可以实现高可用,主备容灾。而且容灾的宕机时间也比较短。但因为VRRP、主备切换都没有什么复杂的逻辑,所以无法应对某些特殊场景,比如主备通信链路出问题
pg中如何回收默认public所带的所有权限的问题
回答 1
你的问题其实就是“默认权限”,可以去查看下官方文档,对于不同的数据库对象:database、schema、table、sequence、fucntion,他们的默认权限是什么。
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~