关于关系的Postgres许可被拒绝

时间:2018-03-16 05:11:58

标签: database postgresql

我正在尝试学习Postgres,我已经制作了两个基本表格,我不能将它们连接在一起。

这是我的关系列表:

 Schema |     Name     |   Type   |  Owner
--------+--------------+----------+----------
 public | login        | table    | postgres
 public | login_id_seq | sequence | postgres
 public | users        | table    | test
(3 rows)

当我使用命令

SELECT * FROM users JOIN login ON users.name = login.name;

时,我得到了

  

错误:关系登录的权限被拒绝

我不知道该做什么或做错了什么。

3 个答案:

答案 0 :(得分:3)

您应该向用户 test 授予SELECT权限:

GRANT SELECT ON login TO test;

如果if允许 test 修改login,您还应该授予其他权限:

GRANT SELECT, INSERT, UPDATE, DELETE ON login TO test;

您应该将这些语句作为数据库所有者或用户 postgres 执行。通常,您可以使用

psql -Upostgres -dtest

如果您在运行Postgres服务器的同一台机器上运行此命令。

您还可以将login的所有权更改为 test

ALTER TABLE login OWNER TO test;
ALTER SEQUENCE login_id_seq OWNER TO test;

但必须以用户 postgres 执行此操作。

修改:您可以尝试使用

更改用户
SET ROLE 'postgres';

按照 @lat long 的建议。

答案 1 :(得分:1)

所以这就是我最终让它发挥作用...我基本上只是进入了pgAdmin4的登录属性,找到了所有者并将其切换为测试并运行: SELECT * FROM users JOIN login ON users.name = login.name; 终于得到了我想要的东西。令人惊讶的简单修复。

答案 2 :(得分:0)

“test”用户无权登录并使用相关表。使用“postgres”用户运行查询:

SET ROLE 'postgres';

然后运行您的查询。