我为Postgres数据库创建了一个用户,但我无法使用我设置的用户访问数据。
在python shell中,我运行了以下代码:
>>> import psycopg2
>>> conn=psycopg2.connect(
database="db",
user="postgres",
host="/tmp/",
password="opensesame"
)
>>> cur = conn.cursor()
>>> state = 'Arkansas'
>>> cur.execute("SELECT city FROM table WHERE state = %s", (state,))
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
cur.execute("SELECT city FROM table WHERE state = %s", (state,))
ProgrammingError: permission denied for relation table
作为超级用户,我尝试过:
db=# ALTER USER postgres SET TO default
但它没有帮助
我需要让这个用户访问此表,任何帮助将不胜感激。感谢您的观看。
答案 0 :(得分:1)
试试这个, 登录postgres
sudo -u postgres psql
然后输入\l
它将列出所有表格,您将看到已创建数据库的列表,
然后
GRANT ALL ON db TO postgres;
如果一切顺利,你现在应该再次\l
,看看你现在有特权。
答案 1 :(得分:0)
在我的代码中,我收到了错误消息:
ProgrammingError: permission denied for relation author
虽然:
GRANT ALL ON db TO postgres;
可能会为某些人解决此错误,我后来找到了: Permission denied for relation
并发现您可能想要命名关系,序列或表而不是DB。根据上面的链接,授予DB权限可能更多地与访问连接有关,而不是递归地遍历表,关系和序列,并为所有这些提供权限。
至少,如果你遇到这个错误,请阅读本文和那篇文章,看看是否有人解决了这个问题。