Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 限制对google cloud sql的db用户权限_Postgresql_Google Cloud Sql - Fatal编程技术网

Postgresql 限制对google cloud sql的db用户权限

Postgresql 限制对google cloud sql的db用户权限,postgresql,google-cloud-sql,Postgresql,Google Cloud Sql,我是谷歌云SQL的新手。我用两个新用户创建了两个postgres数据库(一个是从web dashboard创建的,一个是从commandline创建的)。我的目标是防止两个用户能够修改彼此的数据库,但我无法让它工作 以下是我想要的: UserA在DB_A上的所有权限 UserA对DB_B没有权限 UserB在DB_B上的所有权限 用户B在DB_A上没有权限 我已经尝试从psql提示符授予/撤销权限,但最终我仍然能够以UserB的身份在DB_A中创建/删除表 有可能实现我想要的吗?我遗漏了什么

我是谷歌云SQL的新手。我用两个新用户创建了两个postgres数据库(一个是从web dashboard创建的,一个是从commandline创建的)。我的目标是防止两个用户能够修改彼此的数据库,但我无法让它工作

以下是我想要的:

  • UserA在DB_A上的所有权限
  • UserA对DB_B没有权限
  • UserB在DB_B上的所有权限
  • 用户B在DB_A上没有权限
我已经尝试从psql提示符授予/撤销权限,但最终我仍然能够以UserB的身份在DB_A中创建/删除表


有可能实现我想要的吗?我遗漏了什么吗?

云上的Postgres SQL是标准的Postgres,所以它与任何其他Postgres实例一样:

要授予角色所有权限,请执行以下操作:

GRANT ALL ON <db_name> TO <role_name>;
将全部启用授予;
要删除所有特权,请执行以下操作:

REVOKE ALL ON <db_name> TO <role_name>; 
撤销对所有用户的访问;
关于特权的博士后确实给出了以下警告:

对象所有者的特权(即修改 或销毁对象)始终隐含为所有者,并且 无法授予或撤销


所以请记住,如果UserA同时拥有这两个数据库,那么它们总是可以修改它们

不幸的是,这似乎不起作用:我通过“postgres”用户创建了所有数据库/用户,然后根据需要授予/撤销权限,但问题仍然存在。上面的答案中解释了这一点:对象所有者的特权(即修改或销毁对象的权利)始终隐含在所有者身份中,不能授予或撤销。但是所有者可以选择撤销自己的普通特权,例如使表成为只读。。。您可以将表修改为UserB或UserA,因为基本上您是所创建对象的所有者。试着让你将扮演这些角色的人进行修改,看看会发生什么。