首页 > 解决方案 > 在 psycopg2 中没有 postgres 数据库的所有权限

问题描述

我试图编写一个 python 函数来将一些数据添加到数据库中。

from psycopg2 import connect

username = "username"
pswd = "1234"
db_name = "project_db"
con = connect(user = username,
                      password = pswd,
                      host = "127.0.0.1",
                      port = "5432",
                      database = db_name )  
cursor = con.cursor()
query = "INSERT INTO test_(name) "\
        "VALUES ('my_name')"

cursor.execute(query)

结果是:psycopg2.errors.InsufficientPrivilege: permission denied for table test_ 。我尝试使用以下命令向我的用户授予所有权限:

GRANT ALL PRIVILEGES ON DATABASE project_db to username;

然后重新启动数据库,但结果是一样的。

标签: pythonpostgresqlpsycopg2

解决方案


授予数据库权限既不会授予数据库模式的权限,也不会授予模式中的对象的权限。

您需要使用特定的 GRANT 语句授予架构和架构对象的权限。

请参阅PG 文档中的权限部分


推荐阅读