解决“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 | 表格 | – |
这里是以超级用户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)所示:
3 查询权限
使用命令,查询hello的权限
select * from information_schema.table_privileges where grantee='hello';
效果如下:
以上是关于解决“psycopg2.errors.InsufficientPrivilege: permission denied for table”问题的主要内容,如果未能解决你的问题,请参考以下文章