18

我正在尝试在 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

4 回答 4

20

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

GRANT SELECT ON tablename TO PUBLIC;

我还看到 SELinux 导致问题和地方,例如这里提到的。我不确定关闭 SELinux 的命令,但您可以通过使用查看它是否正在运行

selinuxenabled && echo enabled || echo disabled
于 2013-08-12T17:58:14.340 回答
3

这只是意味着您无权访问应用程序表。请求您的根管理员或数据库管理员授予您访问应用表的权限。如果您是 root 或具有授予权限,您可以使用 grant 命令授予您自己使用表或数据库上的所有 sql 语句的权限
例如:

               grant all privileges on database money to cashier;


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

于 2013-08-12T18:12:08.483 回答
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}

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

于 2020-07-07T23:38:04.083 回答
0

如果是 DB2,则转到 DB2 的命令控制台,选择您各自的数据库并通过右键单击数据库选择权限选项,然后添加您各自的 DB2 用户并授予所需的访问权限。

于 2016-08-01T12:20:45.713 回答