暂无图片
已经回收了模式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 用多线程就能实现全局临时表?
回答 1
是的,PostgreSQL可以使用多线程来实现全局临时表。在PostgreSQL中,全局临时表是一种特殊的表类型,它可以在多个会话之间共享。使用多线程可以提高全局临时表的性能和并发性。
windows visual studio 调试Linux 的PostgreSQL
回答 1
"Enablenativecodedebugging":启用本地代码调试。"Usesymbolsandsourcecodefordebugging":使用符号和源代码进行调试。这些选项通常可以在Vis
关于导入数据的日志记录
回答 1
1.psql的–singlestep选项可能满足你的需求,每条语句需要确认再执行。2.pgrestore的–verbose选项可以打印出日志,默认是只有失败才输出日志。
postgresql在windows server2016下登录报错
回答 3
错误提示信息已经很明确了:FATAL:role"Administrator"doesnotexist数据库用户连接可以参考下面这篇文章:元命令connect连接
pg中如何vacuum某个分区?
回答 1
你的意思是这样子吗?
PostgreSQL如何实现双主双活部署?
回答 2
可以看看这个,介绍了一些工具https://cloud.tencent.com/developer/article/1802941?from15425
PostgreSQL两个节点如何做高可用? patroni+etcd必须奇数节点
回答 3
已采纳
奇数节点是因为要做投票选举,比如使用raft算法,pg或者其他关系数据库高可用主要是基于共享存储或者日志顺序应用,算法不一样,要求也不一样
postgresql state_change的时间很久,而且状态是active,这时SQL一直在执行吗?
回答 1
是的,pgstatactivity中state字段为active表示sql正在运行。
关闭PG库时,有三种方式:smart、fast和immediate。其中哪种模式,等效于Oracle数据库中的shutdown abort?
回答 3
immediate
clusterdb的适用场景
回答 1
有一本书LearningPostgreSQL有一段介绍,供参考:PostgreSQLalsoprovidestoolstomaintainthesystemobjects,mainlyclusterd
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~