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

Правильный способ предоставления разрешений в PostgreSQL

Я новичок в PostgreSQL, и у меня возникли некоторые проблемы с поиском информации о том, как предоставить пользователю разрешения на принадлежащую ему базу данных. Я прочитал несколько источников, в которых говорится, что у владельца есть все разрешения, но, похоже, это не работает для меня. Мне все еще приходилось предоставлять разрешения для запуска оператора select.

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

Вот что я сделал до сих пор:

# Create the user
createuser -SDRPE demo

# Create the database
createdb demo -O demo

# Import schema
psql -f myfile.sql demo

# Grant Permissions
???

Может ли кто-нибудь сказать мне, как лучше всего это сделать? В настоящее время я пишу все это внутри задачи Rake, поэтому я мог технически получить все таблицы в базе данных и перебирать их, но это выглядит ужасно неуклюжим решением. Кажется, я что-то упускаю. Приветствуются любые мысли / комментарии / ссылки.

Изменить 1: Вкратце, все эти команды запускаются от имени пользователя root, который является суперпользователем в базе данных с IDENT SAMEUSER аутентификация, указанная в pg_hba.conf в случае, если это имеет значение.

Вот некоторые примеры:

почти все: предоставить все права на демонстрацию базы данных для демонстрации;

предоставить несколько простых выборок: предоставить выбор в таблице foo для демонстрации;

больше, чем выбор: предоставить выбор, вставить, обновить, удалить в таблице foo для демонстрации;

Больше информации здесь: http://www.postgresql.org/docs/8.3/static/sql-grant.html

Ты можешь попробовать

psql dbname username < filename.sql

Итак, вы бы использовали

psql demo demo < myfile.sql

Я не уверен, куда идет ваш файл sql, потому что вы не указываете db в своем скрипте.

Если все, что вы хотите сделать, это предоставить пользователю «демо» возможность читать / писать / изменять «демо» базы данных, вы уже сделали, потому что владелец базы данных имеет все необходимые права по умолчанию.

Если вам нужны более конкретные привилегии для более чем одного пользователя, вы можете СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ новый пользователь и ГРАНТ привилегии для одного или нескольких объектов.

Для нелокального доступа к базе данных настоятельно рекомендую настроить ваш pg_hba.conf