Подтвердить что ты не робот

Не может предоставлять пользовательские привилегии для базы данных postgresql (для приложения rails)

Я прочесал через: 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 | {}

У меня нет идей. Помогите мне пожалуйста?

С Рождеством и С Новым Годом!

4b9b3361

Ответ 1

Вы пробовали:

--Change the database ownership
alter database lateraldev owner to pavan;

--and do the same for all tables
psql -tc "select 'alter table ' || tablename || ' owner to pavan;' from pg_tables where schemaname not in ('pg_catalog', 'information_schema');" lateraldev | psql -a lateraldev

Ответ 2

поэтому после некоторого рытья. Нашли это на веб-сайте postgres. По сути, ничего, кроме имени таблицы, должно быть явно указано при предоставлении разрешения.

GRANT ALL PRIVILEGES ON DATABASE my_newly_created_db_name TO my_user_name;

http://www.postgresql.org/message-id/[email protected]

Ответ 3

Попробуйте сделать пользователя с разрешением CREATEDB, а затем вы можете создать базу данных с этим пользователем. После этого пользователь получит разрешение на эту базу данных.

CREATE USER myuser CREATEDB;

Я знаю, что это не идеальное решение, но я надеюсь, что это сработает для вас.

-Брайан