42501:在Postgresql中查询时不充分的特权错误

时间:2013-08-12 17:53:57

标签: sql database postgresql-9.2

我正在尝试查询postgresql中的数据库表,但每次运行以下查询时都会给出INSUFFICIENT PRIVILEGE错误。可能是这种许可被拒绝错误的原因。另外,我在windows中使用pgadmin工具来连接Linux环境中的数据库。以下是我正在运行的查询

> > SELECT appid,hash 
>       FROM app
>       WHERE appid=1;

在运行相同的查询时,我收到以下错误

ERROR:  permission denied for relation app

********** Error **********

ERROR: permission denied for relation app
SQL state: 42501

4 个答案:

答案 0 :(得分:10)

运行查询的用户需要该表的权限。您可以使用GRANT语句将它们授予该用户。以下是授予PUBLIC

的示例
GRANT SELECT ON tablename TO PUBLIC;

此外,我已经看到SELinux引起了诸如here之类的地方提及它。我不完全确定关闭SELinux的命令,但你可以通过

查看它是否正在运行
selinuxenabled && echo enabled || echo disabled

答案 1 :(得分:1)

这仅表示您无权访问app表。请求您的根或数据库管理员授予您访问app表的权限。如果您是root用户或具有授予权限,则可以使用grant命令授予您自己的权限,以便在表或数据库上使用所有sql语句
例如:

               grant all privileges on database money to cashier;

之前,您必须以root或用户身份登录才能授予权限
有关此命令的更多详细信息,请参阅 http://www.postgresql.org/docs/8.1/static/sql-grant.html

答案 2 :(得分:1)

如果它是DB2,那么转到DB2的命令控制台,选择相应的数据库并通过右键单击数据库选择“权限”选项,然后添加相应的DB2用户并授予所需的访问权限。

答案 3 :(得分:0)

您需要确保与您连接的用户在您试图与该用户访问的架构上也具有“ USAGE”访问权限。我最近遇到了一个错误,我将转储还原到数据库中,然后让某些用户只向我提供只读访问权限。我已遵循以下步骤-

CREATE ROLE myapp_readonly;
GRANT CONNECT ON DATABASE {database} TO myapp_readonly;
GRANT USAGE ON SCHEMA {schema} TO myapp_readonly;
GRANT SELECT ON TABLE {schema}.{table_name} TO myapp_readonly;
GRANT myapp_readonly TO {usre};

在尝试访问表时执行了这些步骤之后,收到了以下错误-

SQL Error [42501]: ERROR: permission denied for schema {schema}

就我而言,我的用户已经可用,并且架构和数据库最近已恢复。在向用户提供了对架构的“使用”访问权限后,错误已解决。