【发布时间】:2015-05-16 06:13:56
【问题描述】:
我有运行数据库的 Postgresql 9.2,现在尝试创建一个只读用户。我遵循了这些描述:
ERROR: permission denied for relation tablename on Postgres while trying a SELECT as a readonly user
How do you create a read-only user in PostgreSQL?
基本上我做了以下事情:
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
在此之后,“\l”显示如下:
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
这对我来说看起来不错,该数据库/模式中的表列表也很好:
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)
我不知道哪里出了问题或缺少了什么。
非常感谢您的帮助!
【问题讨论】:
-
使用相同的连接设置我无法重现该错误。您是否以与第一个示例相同的方式与
psql连接? -
您是否 100% 确定要连接到同一主机上的同一数据库?
-
在第一个例子中我像这样连接:# psql -d jbossmanager -U jbossmanager -h 127.0.0.1 在第二种情况下是这样的:# psql -d jbossmanager -U jbcust -h 127.0.0.1 是,我确信这是同一主机上的同一个数据库。
标签: postgresql configuration permissions readonly postgresql-9.2