加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

权限 – Postgresql:在数据库中授予所有权限有什么作用?

发布时间:2020-12-13 16:26:23 所属栏目:百科 来源:网络整理
导读:我正在尝试将给定数据库的所有表的所有权限授予新的postgres用户(而不是所有者).似乎GRANT ALL PRIVILEGES在DATABASE my_db TO new_user;不这样做.成功运行所述命令后(作为postgres用户),我得到以下new_user: $psql -d my_dbmy_db = SELECT * FROM a_table_
我正在尝试将给定数据库的所有表的所有权限授予新的postgres用户(而不是所有者).似乎GRANT ALL PRIVILEGES在DATABASE my_db TO new_user;不这样做.成功运行所述命令后(作为postgres用户),我得到以下new_user:
$psql -d my_db
my_db => SELECT * FROM a_table_in_my_db;
ERROR:  permission denied for relation a_table_in_my_db

两个问题:

1)如果没有授予my_db上所有表的所有权限,上面的命令会做什么?

2)将所有表的所有权限授予用户的正确方法是什么? (包括将来创建的所有表格)

您的问题的答案来自 online PostgreSQL 8.4 docs.

>授予DATABASE上的所有特权将数据库的CREATE,CONNECT和TEMPORARY特权授予角色(用户被正确称为角色).这些特权实际上都不允许角色从表中读取数据;该表需要表的SELECT权限.
>我不确定是否有一种“正确”的方式将所有表的所有权限授予角色.确保给定角色拥有表的所有权限的最佳方法是确保角色拥有该表.默认情况下,每个新创建的对象都由创建它的角色拥有,因此如果您希望角色拥有表的所有权限,请使用该角色创建它.

PostgreSQL 9.0引入了几乎所需的以下语法:

在SCHEMA public to new_user中授予所有表格的所有权限;

问题是如果您在默认的“公共”模式之外的模式中创建表,则此GRANT将不适用于它们.如果您确实使用非公共模式,则必须分别授予这些模式的特权.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读