2013-03-20 64 views
174

我试图运行简单的SQL命令:权限被拒绝的关系

select * from site_adzone; 

,我得到这个错误

ERROR: permission denied for relation site_adzone 

可能是什么问题就在这里?

我也试着选择其他表,并得到同样的问题。我也试着这样做:

GRANT ALL PRIVILEGES ON DATABASE jerry to tom; 

,但我从控制台

WARNING: no privileges were granted for "jerry" 

这种反应你有一些想法什么都可以错了吗?

+0

我不知道如何更新权限,这样我可以阅读DB – bla0009 2013-03-20 10:23:14

+1

/写您需要授予必要的特权:HTTP:// WWW。 postgresql.org/docs/current/static/ddl-priv.html和http://www.postgresql.org/docs/current/static/sql-grant.html – 2013-03-20 10:32:40

+2

欢迎来到SO!对于这个问题,您可能会在dba.stackexchange.com上获得更多帮助,尽管您可能会发现同样多的snide评论:) – 2013-03-28 04:09:59

回答

219

对数据库的GRANT不是你所需要的。直接授予表格。

授予数据库权限主要用于授予或撤销连接权限。这允许您指定谁可以在数据库中执行任何操作,如果他们有足够的其他权限。

你想代替:

GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry; 

这将需要这个问题的关心。

+0

我试过这个 授予所有将表site_adzone上的权限设置为jerry; 并得到了这个回应 错误:权限被拒绝关系site_adzone – bla0009 2013-03-20 12:19:57

+5

作为超级用户运行它,像postgres。 – 2013-03-20 12:21:07

+11

这可以成为快捷方式吗?在所有表上授予所有特权? – Shadur 2014-04-08 11:17:07

132

发布Ron E对所有表的授予权限的回答,因为它可能对其他人有用。

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry; 
+2

这一个是正确的答案!另一个只适用于一个表的许可 – stackdave 2016-11-28 07:44:02

+7

您可能还需要对'ALL SEQUENCES'和'ALL FUNCTIONS'执行类似的命令。 – Pistos 2017-06-27 05:37:30

29

连接到正确的数据库第一,然后运行:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry; 
+0

感谢连接到正确的数据库是不是我更早做! – asgs 2017-09-22 09:10:53

+2

连接到正确的数据库使HUGE dufference :)'\ connect databasename;' – 2018-01-22 10:54:39

+0

这。我一直与“postgres”连接。谢谢! – 2018-02-05 04:28:24

5

要授予权限对于现有的表使用:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <schema> TO <role> 

要指定将被应用到默认权限未来表使用:

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> 
    GRANT <privileges> ON TABLES TO <role>; 

例如

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

如果使用SERIALBIGSERIAL列,那么你可能会想为SEQUENCES这样做,否则你INSERT将失败(Postgres 10's IDENTITY不会从问题的困扰,并建议在SERIAL类型) ,即

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO <role>; 

另见我的回答PostgreSQL Permissions for Web App更多的细节和可重复使用的脚本。

编号:

GRANT

ALTER DEFAULT PRIVILEGES