解决“psycopg2.errors.InsufficientPrivilege: permission denied for table”问题

Posted sanqima

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决“psycopg2.errors.InsufficientPrivilege: permission denied for table”问题相关的知识,希望对你有一定的参考价值。

    今天在写入PostgreSQL的dapp_namemap表格时,报"psycopg2.errors.InsufficientPrivilege: permission denied for table"错误,如图(1)所示。

    问题原因:当前用户hello对表格没有读写权限,如表格(1)所示。
    解决方法:使用超级用户,进入表格所在的数据库,然后对当前用户授予读写权限。
    详细如下:

名称类型权限
postgres超级用户全部权限
hello普通用户仅有登录权限,没有读写权限
hellodb数据库
dapp_namemap表格
表(1) helloy用户没有读写权限

    这里是以超级用户postgres授予hello用户,拥有对hellodb数据库下所有表格的读写权限为例进行说明。

1 超级用户登录指定数据库

    使用超级用户postgres,登录指定的数据库(根据自己的情况按需指定),本案例的DB是hellodb,注意,不要登录默认的数据库PG,否则就缘木求鱼了。如果登录了默认的数据库,就是默认数据库PG对hello用户的授权,而不是hellodb数据库对hello用户的授权。

psql -U postgres -d hellodb

2 授予hello用户读写权限

grant usage on schema public to hello;
grant all privileges on all tables in schema public to hello;
grant all privileges on all sequences in schema public to hello;
grant select,insert,update,delete on all tables in schema public to hello;
grant all on schema public to hello;

    如图(2)所示:

图(2) 登录指定的数据库,并授权

3 查询权限

    使用命令,查询hello的权限

select * from information_schema.table_privileges where grantee='hello';

    效果如下:

图(3) 授权成功

以上是关于解决“psycopg2.errors.InsufficientPrivilege: permission denied for table”问题的主要内容,如果未能解决你的问题,请参考以下文章

vs2008解决方案资源管理器不显示解决方案

什么是 沙盒解决方案

解决PowerShell乱码问题

如何解决解决方案中现有项目的c#CS0006错误

关于问题解决与事件解决的思考

「解决方案架构」解决方案架构概述