Назад | Перейти на главную страницу

Ограничьте роль в 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» для доступа только к db2 sch_e и shc_g, а также не показывать другие схемы в той же базе данных. При перечислении баз данных вывод должен быть:

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

Мое текущее решение ограничивает доступ к схеме и базе данных, но я все еще могу видеть список имен базы данных. Когда я пытаюсь получить доступ к любому из них (кроме разрешенного), я получаю сообщение о том, что конкретная запись не найдена в файле pg_hba.conf, что хорошо, но не идеально.

В настоящее время я проверяю руководство и ищу в Google дополнительную информацию.

заранее спасибо

Вы не можете ограничить возможность просмотра существующих баз данных. Но какое это имеет значение, если вы можете ограничить возможность подключения?

Если вы предпочитаете другое сообщение об ошибке, вы можете попробовать пропустить людей через pg_hba.conf, а затем ограничить разрешение CONNECT для самой базы данных (REVOKE CONNECT ON DATABASE foo FROM public; GRANT CONNECT ON DATABASE foo TO somerole; ")