Я прочесал через: http://www.postgresql.org/docs/current/interactive/app-psql.html#APP-PSQL-META-COMMANDSf и https://www.digitalocean.com/community/articles/how-to-use-roles-and-manage-grant-permissions-in-postgresql-on-a-vps--2, но до сих пор не удалось заставить это работать.
Я сделал это, чтобы заставить postgres работать локально: https://askubuntu.com/info/42013/problem-installing-and-configuring-postgresql.
[email protected]% which psql
/usr/bin/psql
это привело меня в:
[email protected]% sudo su - postgres
[sudo] password for pavan:
[email protected]%
Итак...
[email protected]% createuser pavankat
Shall the new role be a superuser? (y/n) y
[email protected]%
это получает все роли
\du
который показывает pavankat, поэтому роль была сделана
Это работает:
postgres=# CREATE database lateraldev;
CREATE DATABASE
postgres=# \l
Теперь я пытаюсь предоставить пользователям passaldev привилегии, pavankat:
это не работает:
GRANT RULE ON lateraldev to pavankat
не работает:
GRANT ALL ON lateraldev TO pavankat;
не работает:
postgres=# GRANT ALL ON lateraldev TO pavankat;
ERROR: relation "lateraldev" does not exist
похоже, что это сработало, но \du ничего не показывал:
postgres=# GRANT ALL ON DATABASE lateraldev TO pavankat;
GRANT
то же самое с этим, не делает этого:
postgres=# GRANT ALL ON ALL TABLES IN SCHEMA public TO pavankat;
GRANT
postgres=# GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO pavankat;
GRANT
postgres=# GRANT ALL ON ALL FUNCTIONS IN SCHEMA public TO pavankat;
GRANT
postgres=# \du
Я использовал этот пост: http://imaginaryrobots.wordpress.com/2010/03/10/grant-all-in-postgres/ и скопировал оболочку script в приложение rails.
затем выполнил (чтобы сделать исполняемый файл):
[email protected]% chmod 755 give_permissions_script.sh
и он не работает:
[email protected]$ ./give_permissions_script.sh
GRANT ALL ON DATABASE lateraldev TO pavankat;
could not change directory to "/home/pavan/Dropbox/venturelateral"
could not change directory to "/home/pavan/Dropbox/venturelateral"
попробовал это: http://smokeandumami.com/2009/11/11/grant-permissions-on-all-tables-and-sequences-in-postgresql/ и, похоже, что-то сделал, но не работает:
[email protected]% chmod 755 give_permissions_script2.sh
[email protected]% ./give_permissions_script2.sh
GRANT SELECT,UPDATE,DELETE,INSERT ON TABLE public.relname to pavankat;
см
postgres=# grant all privileges on database lateraldev to pavan;
GRANT
postgres=# \du
Это тоже не работает: сначала подключитесь к базе данных:
postgres=# psql lateraldev
lateraldev=# GRANT ALL ON DATABASE lateraldev TO pavankat;
GRANT
lateraldev=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
pavan | Superuser, Create role, Create DB, Replication | {}
pavankat | Superuser, Create role, Create DB, Replication | {}
postgres | Superuser, Create role, Create DB, Replication | {}
У меня нет идей. Помогите мне пожалуйста?
С Рождеством и С Новым Годом!