我仔细研究了一下: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,但还是没能让它起作用.
我这样做是为了让博士后在当地工作:https://askubuntu.com/questions/42013/problem-installing-and-configuring-postgresql人.
pavan@myUbuntuLaptop% which psql
/usr/bin/psql
这让我进入了:
pavan@myUbuntuLaptop% sudo su - postgres
[sudo] password for pavan:
postgres@myUbuntuLaptop%
所以
postgres@myUbuntuLaptop% createuser pavankat
Shall the new role be a superuser? (y/n) y
postgres@myUbuntuLaptop%
这就得到了所有的角色
\du
这显示了帕凡卡特,所以这个角色被创造出来了
这是有效的:
postgres=# CREATE database lateraldev;
CREATE DATABASE
postgres=# \l
现在我try 将lateraldev的特权授予用户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
这看起来很有效,但没有显示出任何东西:
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
我使用了post:http://imaginaryrobots.wordpress.com/2010/03/10/grant-all-in-postgres/并将shell脚本复制到rails应用程序中.
然后运行(使文件可执行):
pavan@myUbuntuLaptop% chmod 755 give_permissions_script.sh
and it 不起作用:
postgres@myUbuntuLaptop$ ./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"
tried this out: http://smokeandumami.com/2009/11/11/grant-permissions-on-all-tables-and-sequences-in-postgresql/ and it seems to have done something, but 不起作用:
pavan@myUbuntuLaptop% chmod 755 give_permissions_script2.sh
pavan@myUbuntuLaptop% ./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 | {}
我没有主意了.请帮帮我?
圣诞快乐,节日快乐!