Postgresql postgres只读用户不工作

Postgresql postgres只读用户不工作,postgresql,configuration,permissions,readonly,postgresql-9.2,Postgresql,Configuration,Permissions,Readonly,Postgresql 9.2,我的Postgresql 9.2正在运行数据库,现在尝试创建一个只读用户。我遵循这些描述: 基本上,我已经做了以下工作: jbossmanager=# CREATE USER jbcust WITH ENCRYPTED PASSWORD '#######'; CREATE ROLE jbossmanager=# GRANT USAGE ON SCHEMA jbossmanager to jbcust; GRANT jbossmanager=# ALTER DEFAULT PRIVILEGE

我的Postgresql 9.2正在运行数据库,现在尝试创建一个只读用户。我遵循这些描述:

基本上,我已经做了以下工作:

jbossmanager=# CREATE USER jbcust  WITH ENCRYPTED PASSWORD '#######';
CREATE ROLE
jbossmanager=# GRANT USAGE ON SCHEMA jbossmanager to jbcust;
GRANT
jbossmanager=# ALTER DEFAULT PRIVILEGES IN SCHEMA jbossmanager GRANT SELECT ON TABLES TO jbcust;
ALTER DEFAULT PRIVILEGES
jbossmanager=# GRANT CONNECT ON DATABASE jbossmanager to jbcust;
GRANT
jbossmanager=# GRANT SELECT ON ALL SEQUENCES IN SCHEMA jbossmanager TO jbcust;
GRANT
jbossmanager=# GRANT SELECT ON ALL TABLES IN SCHEMA jbossmanager TO jbcust;
GRANT
jbossmanager=# \l
                                     List of databases
 Name     |    Owner     | Encoding |   Collate   |    Ctype    |       Access privileges
--------------+--------------+----------+-------------+-------------+-------------------------------
 jbossmanager | jbossmanager | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/jbossmanager             +
          |              |          |             |             | jbossmanager=CTc/jbossmanager+
          |              |          |             |             | jbcust=c/jbossmanager
在此之后,一个“\l”显示以下内容:

jbossmanager=# CREATE USER jbcust  WITH ENCRYPTED PASSWORD '#######';
CREATE ROLE
jbossmanager=# GRANT USAGE ON SCHEMA jbossmanager to jbcust;
GRANT
jbossmanager=# ALTER DEFAULT PRIVILEGES IN SCHEMA jbossmanager GRANT SELECT ON TABLES TO jbcust;
ALTER DEFAULT PRIVILEGES
jbossmanager=# GRANT CONNECT ON DATABASE jbossmanager to jbcust;
GRANT
jbossmanager=# GRANT SELECT ON ALL SEQUENCES IN SCHEMA jbossmanager TO jbcust;
GRANT
jbossmanager=# GRANT SELECT ON ALL TABLES IN SCHEMA jbossmanager TO jbcust;
GRANT
jbossmanager=# \l
                                     List of databases
 Name     |    Owner     | Encoding |   Collate   |    Ctype    |       Access privileges
--------------+--------------+----------+-------------+-------------+-------------------------------
 jbossmanager | jbossmanager | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/jbossmanager             +
          |              |          |             |             | jbossmanager=CTc/jbossmanager+
          |              |          |             |             | jbcust=c/jbossmanager
这对我来说很好,还有一个db/schema lokks中的表列表:

jbossmanager=# \dp+
                                                   Access privileges
    Schema    |             Name              |   Type   |         Access privileges         | Column access privileges
--------------+-------------------------------+----------+-----------------------------------+--------------------------
 jbossmanager | env_server_standalone_info    | table    | jbossmanager=arwdDxt/jbossmanager+|
              |                               |          | jbcust=r/jbossmanager             |
但现在,当我作为这个jbcust用户连接到数据库并尝试:

#psql -d jbossmanager -U jbcust -h 127.0.0.1
Password for user jbcust:
psql (9.2.4)
Type "help" for help.

jbossmanager=> \dp+
                          Access privileges
 Schema | Name | Type | Access privileges | Column access privileges
--------+------+------+-------------------+--------------------------
(0 rows)
我不知道什么是错的,什么是缺失的


非常感谢你的帮助

在连接只读用户时,我没有看到任何架构的原因是没有设置此用户的默认架构

在此之后:

ALTER USER jbcust SET search_path = jbossmanager;

它工作得很好。

使用相同的连接设置,我无法重现错误。在第一个示例中,您是否以相同的方式连接到
psql
?您是否100%确定您正在连接到同一主机上的同一个DB?在第一个示例中,我的连接方式如下:#psql-d jbossmanager-U jbossmanager-h 127.0.0.1在第二种情况下是:#psql-d jbossmanager-U jbcust-h 127.0.1是,我确信这是同一台主机上的同一个db。我的解决方案最终与您的有点不同,但我仍然想指出,我发现这个问题很有帮助。我从互联网上的几本指南中设置了只读用户,但缺少
将模式jbossmanager上的使用权授予jbcust在这项授权之后,我的只读用户工作得非常好。非常感谢。