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

前端之家收集整理的这篇文章主要介绍了权限 – Postgresql:在数据库中授予所有权限有什么作用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将给定数据库的所有表的所有权限授予新的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将不适用于它们.如果您确实使用非公共模式,则必须分别授予这些模式的特权.

猜你在找的Postgre SQL相关文章