PostgreSQL关联查询报错:permission denied for relation login
解决PostgreSQL关联查询时的权限拒绝问题
嘿,这个问题其实是典型的PostgreSQL权限配置问题,咱们来一步步拆解解决:
首先看你给出的表关系信息:
Schema | Name | Type | Owner --------+--------------+----------+---------- public | login | table | postgres public | login_id_seq | sequence | postgres public | users | table | test (3 rows)
你执行关联查询时用的用户应该是test(毕竟users表属于这个用户),但login表的所有者是postgres——默认情况下test用户没有访问login表的权限,所以才会抛出这个错误:
ERROR: permission denied for relation login
具体解决步骤
- 先切换到拥有
login表权限的用户(比如postgres),执行授权语句给test用户授予login表的查询权限:
GRANT SELECT ON login TO test;
- 如果你之后需要对
login表进行插入、更新或删除操作,可以授予更完整的操作权限:
GRANT SELECT, INSERT, UPDATE, DELETE ON login TO test;
- 另外,因为
login表关联了login_id_seq序列,如果你的业务需要通过这个序列生成主键,还得给test用户授予序列的使用权限:
GRANT USAGE, SELECT ON SEQUENCE login_id_seq TO test;
完成以上授权后,你再重新运行关联查询语句:
SELECT * FROM users JOIN login ON users.name = login.name;
应该就能正常执行啦~
内容的提问来源于stack exchange,提问作者Joe Escobedo
相关产品推荐
相关产品推荐

