我仔细研究了一下:http://www.postgresql.org/docs/current/interactive/app-psql.html#APP-PSQL-META-COMMANDSfhttps://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 | {}

我没有主意了.请帮帮我?

圣诞快乐,节日快乐!

推荐答案

你试过:

--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

Postgresql相关问答推荐

在PostgreSQL中是否有与SQLite R*Tree类似功能?

supabase 中的交易

仅使用 ssl 连接到 Postgresql 数据库

PG 16 的 AGE 安装抛出错误:无法创建 src/backend/parser/ag_scanner.c

表示 SQL 表的 Go struct

为什么这里的默认格式不同? (ISO 8601 的两种不同实现)

如何在 postgresql 上使用 sqlalchemy 进行正确的 upsert?

Rails Migration 使用转换将字符串转换为整数

postgreSQL 将列数据类型更改为没有时区的时间戳

在 postgres 中删除所有共享相同前缀的表

带有 postgres 的 DOCKER 容器,警告:could not open statistics file "pg_stat_tmp/global.stat": Operation not permitted

在远程机器上Restore dump

我应该同时指定 INDEX 和 UNIQUE INDEX 吗?

使用 current_setting() 判断值

在 postgresql 中,如何在 jsonb 键上返回布尔值而不是字符串?

使用 pg_dump 和 psql -U postgres db_name < ... 移动数据库会导致ERROR: relation "table_name" does not exist

Postgres 中有多少表分区太多了?

如何在Postgres中分组并返回总和行

IF处或附近的 Postgres 语法错误

如何在 PostgreSQL 中生成一系列重复数字?