Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ограничение пользователя одной базой данных / 4 сообщений из 4, страница 1 из 1
21.04.2005, 14:51
    #33027904
Sergey S.S.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение пользователя одной базой данных
Хочу чтобы пользователь мог работать только с одной базой данных делаю

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
postgres=# create user user_01 with password '1';
CREATE USER
postgres=# create user user_02 with password '2';
CREATE USER
postgres=# create database db_01 with owner user_01;
CREATE DATABASE
postgres=# create database db_02 with owner user_02;
CREATE DATABASE
postgres=# grant all on database db_01 to user_01;
GRANT
postgres=# grant all on database db_02 to user_02;
GRANT
postgres=# revoke all on database db_01 from PUBLIC;
REVOKE
postgres=# revoke all on database db_02 from PUBLIC;
REVOKE

# psql -Uuser_01 db_02;
Password:
Welcome to psql  7 . 3 . 9 -RH, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

db_02=>

те спокойно подконектился с чужой базе

вот pg_hba.conf

Код: plaintext
1.
2.
3.
# TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK           METHOD
local     all           postgres                                         ident   sameuser
local     all           all                                               md5
...
Рейтинг: 0 / 0
21.04.2005, 15:00
    #33027945
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение пользователя одной базой данных
"подконектился" = "может делать запросы"?

Попробуй так:
Код: plaintext
1.
2.
3.
4.
# TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK           METHOD
local     all               postgres                                           ident   sameuser
local     db_01          user_01                                            md5
local     db_02l         user_02                                            md5
...
Рейтинг: 0 / 0
21.04.2005, 16:55
    #33028455
Sergey S.S.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение пользователя одной базой данных
mwolf"подконектился" = "может делать запросы"?
ага не только запросы, но и даже

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[vgray@vgray vgray]$ psql -Uuser_01 db_02
Password:
Welcome to psql  7 . 3 . 9 -RH, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

db_02=> create table x (i int2);
CREATE TABLE
db_02=>

mwolf
Попробуй так:
Код: plaintext
1.
2.
3.
4.
# TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK           METHOD
local     all               postgres                                           ident   sameuser
local     db_01          user_01                                            md5
local     db_02l         user_02                                            md5


так конечно будет работать, но что-то не очень красиво по сравнению с mysql, это ведь постгрес каждый раз релоадить надо, те всегда шеллом заходить на сервер.

И какой тогда смысл имеет фраза из документации, где написанно

By default, only the owner of an object can do anything with the object. In order to allow other users to use it, privileges must be granted. (There are also users that have the superuser privilege. Those users can always access any object.)

В то время как на практике пользователь user_01 не являясь владельцем db_02 может там создавать таблицы?
...
Рейтинг: 0 / 0
22.04.2005, 03:50
    #33029066
фффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение пользователя одной базой данных
Sergey S.S.
это ведь постгрес каждый раз релоадить надо, те всегда шеллом заходить на
В то время как на практике пользователь user_01 не являясь владельцем db_02 может там создавать таблицы?

Против создания объектов в схеме public:
Код: plaintext
1.
REVOKE CREATE ON SCHEMA public FROM PUBLIC;

Перегружать настройки из шелла необязательно:
Код: plaintext
1.
2.
3.
4.
5.
CREATE OR REPLACE FUNCTION pg_ctl_reload() RETURNS void AS $_$
  my $rv = spi_exec_query("select current_setting('data_directory')");
  my $dir = $rv->{rows}[ 0 ]->{'current_setting'};
  system("pg_ctl -D \"$dir\" reload");
$_$ LANGUAGE plperlu VOLATILE SECURITY DEFINER;
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ограничение пользователя одной базой данных / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]