限制postgres中的angular色来访问数据库中的某些模式,而不要列出任何其他数据库

我在Ubuntu 9.04下使用PostgreSQL 8.3。 我使用控制台客户端或Pgadmin III访问我的数据库服务器。 目前,我需要限制只能访问数据库中的几个模式,也不要在服务器上显示其他数据库。

例如,我目前的postgres服务器有以下数据库:

postgres-8.3-server |-- db1 | |-- sch_a | |-- sch_b | |-- sch_c | `-- sch_d |-- db2 | |-- sch_e | |-- sch_f | `-- sch_g `-- db3 `-- sch_h 

我需要限制angular色“joe”来访问只有db2的sch_e和shc_g,也不要在同一个数据库中显示其他模式。 列出数据库时,输出结果应该是:

 postgres-8.3-server |-- db2 |-- sch_e `-- sch_g 

我目前的解决scheme限制模式和数据库访问,但我仍然可以看到数据库名称列表。 当我尝试访问其中的任何一个(除了允许的那个)之外,我收到一条关于在pg_hba.conf文件中找不到的特定条目的消息,这很好,但不是很理想。

我目前正在查看手册和谷歌search更多的信息。

提前致谢

您无法限制查看存在哪些数据库的能力。 但是,为什么这么做呢,因为你可以限制连接的能力?

如果你喜欢不同的错误信息,你可以尝试让人们通过pg_hba.conf,然后限制数据库本身的CONNECT权限(REVOKE CONNECT ON DATABASE foo FROM public; GRANT CONNECT ON DATABASE foo TO somerole;)