暂无图片
暂无图片
9
暂无图片
暂无图片
暂无图片

postgresql关于函数和存储过程的默认权限

原创 呵呵 2021-08-23
6713

postgresql 默认public用户对函数和存储过程有执行权限

创建函数

test=> create or replace function fun1(var integer)
test-> returns integer as $$
test$> begin
test$> var := var+1;
test$> return var;
test$> end; $$
test-> language plpgsql;
CREATE FUNCTION
test=>
test=> select funname,funacl from pg_function where funname = ‘fun1’;
funname | funacl
---------±-------
fun1 |
(1 row)

test=>

# 新建的函数,权限为空

新建用户

test=# create user temp ;
CREATE ROLE
test=#

赋予用户新建函数所属schema的usage权限

test=> grant usage on schema user1 to temp;
GRANT
test=# quit

新建用户连接数据库

[polardb@polardb1 ~]$ psql -h 127.0.0.1 -U temp -d test
psql (11.2.9)
Type “help” for help.
test=>

# 对函数有默认执行权限
test=> select user1.fun1(2);
fun1

#------
3
(1 row)

显式赋予函数的查询权限

test=> grant execute on function fun1 to temp;
GRANT
test=>

#再次查看函数的权限信息

test=> select funname,funacl from pg_function where funname = ‘fun2’;
funname | funacl
---------±--------------------------------------
fun2 | {=X/user1,user1=X/user1,temp=X/user1}

#显示 public用户,函数owner,被赋予用户对函数的执行权限。

结论:所有用户对函数和存储过程有默认的执行权限,如果没有对函数显式赋权,pg_function视图的funacl字段值为空,在第一次对函数进行显式赋权后,funacl 显示public用户,函数owner 以及被赋权用户对函数的权限。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论