PostgreSQL - 关系[表]不存在

14
我刚刚创建了一个新用户,我希望他能够访问我们公共表的有限数量。该用户已创建,并且我现在授予了一个公共表的权限。然后,我以该用户身份登录到数据库,并尝试运行对该用户应该能够访问的表的SELECT查询,但我可能错过了一些步骤或做错了什么,因为当我运行查询时,会出现以下错误信息:关系[表格]不存在。以下是我按顺序执行的步骤。
CREATE USER pqb2b WITH PASSWORD 'foo'


 select * from pg_user;
 usename  | usesysid | usecreatedb | usesuper | usecatupd |  passwd   | valuntil | useconfig
 ----------+----------+-------------+----------+-----------+----------+----         |
postgres |       10 | t           | t        | t         | ******** |          | 
 pgb2b   | 17267767 | t           | f        | f         | ******** | infinity |

(1行)

GRANT ALL on b_users to pgb2b;



SELECT
schemaname||'.'||tablename
FROM
pg_tables
WHERE
has_table_privilege (
    'pgb2b',
    schemaname||'.'||tablename,
    'select'
 )
AND
schemaname NOT IN (
    'pg_catalog',
    'information_schema'
 );

public.b_users
(1 row)



~ postgres$ psql -U pgb2b  mydb
psql (9.0.3)
Type "help" for help.

mydb=> select * from b_users;
ERROR:  relation "b_users" does not exist
LINE 1: select * from b_users;

 mydb=> \d+ b_users
 Did not find any relation named "b_users".

2
你指定了模式吗? - ilias
我不这么认为。就是我上面发布的内容。 - Slinky
3
你一定编辑过那个日志;你运行了 select * from users 并得到了 relation b_users does not exist 的结果。你能展示原始的未编辑过的日志吗?如果上述内容确实没有被编辑过,请展示 \d+ users\d+ b_users 命令的输出。 - Craig Ringer
确实,我的复制粘贴中有一个错字。我已经纠正了这个错字,并在我的问题中添加了额外的输出。 - Slinky
1
你在运行授权操作时是否在正确的数据库中? - Bohemian
显示剩余2条评论
2个回答

18
尽管我向我的pgb2b用户授予权限,但我忘记为该用户指定用途:

即使我给我的pgb2b用户授权,但我忘记为该用户指定使用权限:

GRANT usage on schema public to pgb2b;

这解决了问题。我发现这篇帖子关于设置 PostgreSQL 用户权限非常有帮助。


我得到了这个错误 ERROR: role "pgb2b" does not exist SQL state: 42704 - Lutaaya Huzaifah Idris

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接