ух, проблема следующая:
если в MySQL можно без проблем сказать:
CREATE DATABASE some_base
GRANT USAGE ON some_base.* TO some_user@% IDENTIFIED BY some_passwd
и не будет проблем при попытке подключения с some_base другого пользователя кроме как some_user, то в PostgreSQL все наоборот (тут не помешают пару матов). Сколько манов читал, вот все что выгреб из них (postgresql-docs-8.0.3.tar.bz2):
создаю двоих пользователей:
CREATE USER aaa_user WITH NOCREATEDB NOCREATEUSER ENCRYPTED PASSWORD 'aaa';
CREATE USER bbb_user WITH NOCREATEDB NOCREATEUSER ENCRYPTED PASSWORD 'bbb';
создаю 2 базы:
CREATE DATABASE aaa OWNER aaa_user;
CREATE DATABASE bbb OWNER bbb_user;
сбрасываю привилегии:
REVOKE ALL ON DATABASE aaa FROM PUBLIC CASCADE;
REVOKE ALL ON DATABASE bbb FROM PUBLIC CASCADE;
потом:
|-<^> psql bbb aaa_user
Password:
Welcome to psql 8.0.3, the PostgreSQL interactive terminal.
bbb=> \l+
List of databases
Name | Owner | Encoding | Description
-----------+----------------+-----------+---------------------------
aaa | aaa_user | SQL_ASCII |
bbb | bbb_user | SQL_ASCII |
template0 | postgres | SQL_ASCII |
template1 | postgres | SQL_ASCII | Default template database
(4 rows)
bbb=> \du
List of users
User name | User ID | Attributes | Groups
----------------+---------+----------------------------+--------
aaa_user | 102 | |
bbb_user | 103 | |
postgres | 1 | superuser, create database |
(3 rows)
bbb=> \z
Access privileges for database "bbb"
Schema | Name | Type | Access privileges
--------+------+------+-------------------
(0 rows)
далее, как в фильме: aaa_user сможет делать все что угодно в базе 'bbb'
я начал думать, что разработчики PostgreSQL вообще не придумали никаких средств защиты базы от других пользователей (особенно мне нравится рабочая команда \l+)...
гуглил инет долго, решил сюда прийти.
может кто-нибудь админил эту субд ?
спасибо.