我刚刚创建了一个新用户,我希望他能够访问我们公共表的有限数量。该用户已创建,并且我现在授予了一个公共表的权限。然后,我以该用户身份登录到数据库,并尝试运行对该用户应该能够访问的表的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".
select * from users
并得到了relation b_users does not exist
的结果。你能展示原始的未编辑过的日志吗?如果上述内容确实没有被编辑过,请展示\d+ users
和\d+ b_users
命令的输出。 - Craig Ringer