权限 – 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将不适用于它们.如果您确实使用非公共模式,则必须分别授予这些模式的特权. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |