权限被拒绝的关系(Permission denied for relation)

2019-07-22 02:57发布

我试图运行简单的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"

你有一些想法什么都可以错了吗?

Answer 1:

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

该数据库主要用于授予或撤销连接权限上授予权限。 这使您可以指定谁可以做的东西在数据库中,如果他们有足够的其他权限。

你想,而不是:

 GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry;

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



Answer 2:

在所有表过帐授予权限罗恩é回答,因为它可能是有用的人。

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


Answer 3:

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

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


Answer 4:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to jerry;


Answer 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的IDENTITY不会从问题的困扰,并建议在SERIAL类型),即

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

另见我的回答对PostgreSQL的权限Web应用程序的更多细节和可重复使用的脚本。

参考:

GRANT

ALTER缺省权限



Answer 6:

第一个重要的步骤是连接到您的数据库:

psql -d yourDBName

2步骤,授予权限

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO userName;


Answer 7:

请确保您登录到PSQL作为表的所有者。 找出谁拥有该表使用\dt

psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLES

然后你可以运行补助金



Answer 8:

当你创建一个表作为用户的Postgres,然后尝试访问它作为一个普通用户经常发生这种情况。 在这种情况下,最好再次登录,对于Postgres和使用ALTER TABLE所有者SomeUser的改变表所有权谁将会使用表用户。



文章来源: Permission denied for relation