相关疑难解决方法(0)

为数据库上的用户授予所有权限

我想为用户提供数据库的所有权限,而不是将其作为管理员.我想这样做的原因是,目前DEV和PROD是同一集群上的不同DB,因此我不希望用户能够更改生产对象,但它必须能够更改DEV上的对象.

我试过了:

grant ALL on database MY_DB to group MY_GROUP;
Run Code Online (Sandbox Code Playgroud)

但它似乎没有给予任何许可.

然后我尝试了:

grant all privileges on schema MY_SCHEMA to group MY_GROUP;
Run Code Online (Sandbox Code Playgroud)

它似乎允许我创建对象,但不允许查询属于其他用户的该架构上的\ delete对象

我可以继续在MY_SCHEMA上向用户授予USAGE权限,但是它会抱怨没有权限在桌子上......

所以我想我的问题是:是否有任何简单的方法可以在数据库上为用户提供所有权限?

我正在研究PostgreSQL 8.1.23.

sql postgresql privileges ddl grant

176
推荐指数
5
解决办法
25万
查看次数

将db中的特定模式的所有内容授予PostgreSQL中的组角色

使用PostgreSQL 9.0,我有一个名为"staff"的组角色,并希望在特定模式的表上授予此角色所有(或某些)特权.以下工作均不适用

GRANT ALL ON SCHEMA foo TO staff;
GRANT ALL ON DATABASE mydb TO staff;
Run Code Online (Sandbox Code Playgroud)

除非我在该特定表上授予所有表,否则 "staff"的成员仍然无法对模式"foo"中的各个表或(在第二个命令的情况下)对数据库中的任何表进行SELECT或UPDATE .

我能做些什么让我和我的用户的生活更轻松?

更新:借助serverfault.com的类似问题计算出来.

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foo TO staff;
Run Code Online (Sandbox Code Playgroud)

postgresql privileges database-design roles grant

81
推荐指数
2
解决办法
12万
查看次数

search_path如何影响标识符解析和"当前架构"

是否可以定义默认情况下创建新表的模式?(由"不合格的表名称"引用.)

我已经看到了在Postgres中使用"搜索路径"的一些细节,但我认为它只在检索数据时有效,而不是创建.

我有一堆SQL脚本,它们创建了许多表.我没有修改脚本,而是希望默认情况下在特定模式中设置数据库创建表 - 当它们具有非限定名称时.

这可能吗?

postgresql schema search-path database-table

46
推荐指数
2
解决办法
3万
查看次数

为什么PostgreSQL将用户和组合并为角色?

来自PostgreSQL文档:

角色的概念包含"用户"和"组"的概念.在8.1之前的PostgreSQL版本中,用户和组是不同类型的实体,但现在只有角色.任何角色都可以充当用户,组或两者.

为什么他们在8.1中做出这个改变?

从C编码器的角度来看,使用单个Role类(struct)可能更容易?

更多细节:

CREATE USER is equivalent to CREATE ROLE except that CREATE USER 为用户/角色提供LOGIN权限.

(我即将为我的webapp设计一个权限系统,因此我对此感兴趣.)

postgresql roles database-permissions

23
推荐指数
2
解决办法
8652
查看次数

如何将视图的所有权限授予任意用户

如何为任意用户授予对所有函数和视图的读/选访问权限?

psql --user=postgres -d mydb -f myview.sql用来创建几个函数和视图,然后我运行:

GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
Run Code Online (Sandbox Code Playgroud)

获得所有权限后,我希望myuser现在可以访问postgres用户创建的功能和视图.但是,当我尝试访问它们时myuser,我得到了"关系允许拒绝..."错误.为什么是这样?

sql database postgresql grant pgadmin

23
推荐指数
1
解决办法
4万
查看次数

PostgreSQL - 只允许DB用户调用函数

目前我正在使用PostgreSQL作为我的应用程序.由于我试图将包含事务的每个SQL(即插入,更新,删除)放在一个函数中,我偶然发现了这个问题:

是否有可能只允许数据库用户调用函数和选择语句,而他无法调用包含事务的SQL语句?"呼叫功能"是指任何功能.无论它是否包含交易.

我已经尝试创建一个只能调用函数和Select-Statements的用户.但是在调用包含事务的函数时,我总是会遇到错误.据我所知,如果他调用使用insert,update或delete语句的函数,则dbuser需要写权限.

我错过了什么吗?这种情况真的不可能吗?安全方面,这将是非常好的,因为你几乎首先防止SQL注入.

postgresql stored-procedures sql-injection transactions user-permissions

18
推荐指数
1
解决办法
1万
查看次数

在所有 1000 个 postgres 数据库和架构上创建只读用户

我正在尝试使用Vault在 Postgres 11.8 实例中创建按需临时只读用户。

我会有:

  • 1000 多个数据库(每个客户也称为租户一个)
  • 每个数据库都有一个publicreporting模式。

因此,我试图找到一种方法来授予此只读用户对每个数据库以及两个模式中所有表的访问权限。

当我想出以下片段时:

-- Create a new user
CREATE ROLE "my-readonly-user" WITH LOGIN PASSWORD 'test123';

-- Grant access to the two schema's we have
GRANT USAGE ON SCHEMA public TO "my-readonly-user";
GRANT USAGE ON SCHEMA reporting TO "my-readonly-user";

-- Grant access to all tables in our two schema's
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "my-readonly-user";
GRANT SELECT ON ALL TABLES IN SCHEMA reporting …
Run Code Online (Sandbox Code Playgroud)

postgresql sql-grant

3
推荐指数
1
解决办法
4436
查看次数

无法连接到数据库postgres:致命:角色"_postgres"不存在

在OS X 10.10上工作,从这里安装postgreSQL和PostGIS ,psql版本9.3.5.我很难让postgreSQL运行.

我在计算机上以管理员身份安装了软件包.我的用户名是christoph

我可以登录的唯一方法是:

$ psql -U postgres
Run Code Online (Sandbox Code Playgroud)

我想创建一个名为的用户christoph,作为我在计算机上的管理员名称.我试过(从终端,没有"登录到psql"):

$ sudo -u postgres createuser christoph
> sudo: unknown user: postgres
Run Code Online (Sandbox Code Playgroud)

然后我读了一下并尝试(从终端,没有"登录到psql"):

$ sudo -u _postgres createuser christoph
> Password: ****
> Could not connect to database postgres: FATAL: role "_postgres" does not exist
Run Code Online (Sandbox Code Playgroud)

为什么不工作?

postgresql connection macos psql

2
推荐指数
1
解决办法
3608
查看次数