Ограничьте роль в postgres для доступа к некоторым схемам в базе данных и не перечисляйте другие базы данных.
Я использую PostgreSQL 8.3 под Ubuntu 9.04. Я получаю доступ к своему серверу базы данных, используя консольный клиент или 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
Мне нужно ограничить роль "joe", чтобы получить доступ только к sch_e и shc_g в db2, а также не показывать другие схемы в той же базе данных. При перечислении баз данных вывод должен быть:
postgres-8.3-server
|-- db2
|-- sch_e
`-- sch_g
Мое текущее решение ограничивает доступ к схеме и базе данных, но я все еще вижу список имен базы данных. Когда я пытаюсь получить доступ к любому из них (кроме того, который мне разрешен), я получаю сообщение о конкретной записи, не найденной в файле pg_hba.conf, что хорошо, но не идеально.
В настоящее время я проверяю руководство и гуглю для получения дополнительной информации.
заранее спасибо
1 ответ
Вы не можете ограничить возможность видеть, какие базы данных существуют. Почему это важно, так как вы можете ограничить возможность подключения?
Если вы предпочитаете другое сообщение об ошибке, вы можете попробовать пропустить людей через pg_hba.conf, а затем ограничить разрешение CONNECT для самой базы данных (REVOKE CONNECT ON DATABASE foo FROM public; GRANT CONNECT ON DATABASE foo TO somerole;")