暂无图片
PG13.10权限问题咨询
我来答
分享
暂无图片 匿名用户
PG13.10权限问题咨询

1、用户


2、数据库(新建的数据库)


3、前提

新建的test数据库中,dba_admin顺序执行下列语句:

create table t1(id int);

GRANT USAGE, CREATE ON SCHEMA public TO zll_testuser;

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO zll_testuser;

create table t2(id int);

create view v_t1 as select * from t1 ;

4、问题

zll_testuser登录test数据库后,无法访问t1,可以访问t2,为啥还能访问v_t1?



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

这通常是由于应用程序使用的数据库版本与数据库服务器不兼容引起的。 解决方案: 确保应用程序使用的数据库版本与数据库服务器兼容。

暂无图片 评论
暂无图片 有用 1
打赏 0
结束

我这是直接在应用服务器上执行的命令

暂无图片 评论
暂无图片 有用 0
打赏 0
彭冲

无法访问t1的原因:t1表是在设置默认权限操作之前创建的,需要对t1表grant赋权才能访问。

可以访问t2的原因:t2表是在设置默认权限操作之后创建的,可以访问。

还能访问v_t1的原因:v_t1视图类属于table,对table的默认权限设置也适用于view,也可以访问。

这也是使用视图非常方便的特性,可以减少视图里相关对象的权限设置而允许用户有部分访问权限。

我们也可以更安全的控制视图v_t1的权限,让pg检测基表的权限:需要在15及以上的版本使用security_invoker属性,参考操作如下:

alter view v_t1 set (security_invoker = on);
复制

此时zll_testuser登录test数据库后,也无法访问v_t1。

暂无图片 评论
暂无图片 有用 1
打赏 0
大树666

建议查一下这张表information_schema.table_privileges,看下用户的权限。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
postgresql 的压测,可以用指定的sql进行压测吗?
回答 5
当然可以,使用pgbench指定SQL,然后观察db状态
请教个问题,pg 10.12升级到10.18,有什么快捷的升级方法吗?
回答 1
已采纳
安装10.18数据库软件,启动原来的数据文件。记得先做备份
vacuum full 空间问题
回答 1
vacuumfullverbose<table>试试看,看看有没有索引相关的信息,嘿嘿
postgreSQL 在linux下面已经建立了.pgpass文件了,连接远程服务器,为什么用命令行还得输入密码?
回答 1
报错是啥呢?
pg中备库readonly,能执行vaccum吗?
回答 1
不能
救命postgis has to be installed to the postgresql folder
回答 2
尝试换了其他版本也报相同的错误。
PG数据库在手动收集表统计信息的时候想要增加统计信息的准确度,以下哪些命令可以实现?
回答 1
已采纳
Baltertabletabnamealtercolumncolnamesetstatisticsxxx;Dsetdefaultstatisticstargettoxxx;
惰性冻结对应的啥命令?
回答 1
已采纳
惰性冻结:仅清理死元组,可冻结部分事务ID。VACUUMtabname; 
postgresql9.4,配置log_min_duration_statement后没有起作用?
回答 1
已采纳
有可能是因为logstatement参数设置为all了;
postgreSQL 没开启复制槽配置有影响吗?
回答 1
已采纳
复制槽主要是防止备库需要的wal日志在主库被删除,主库会根据备库返回的信息确认哪些wal日志已不再需要,才能进行清理。但,这样可能导致日志磁盘满。必须有足够的磁盘空间或实时监控日志磁盘使用情况。如果资