Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/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用户的特定权限?_Sql_Database_Postgresql_Grant - Fatal编程技术网

我怎样才能授予&;是否撤消Postgresql用户的特定权限?

我怎样才能授予&;是否撤消Postgresql用户的特定权限?,sql,database,postgresql,grant,Sql,Database,Postgresql,Grant,我的任务是在一台虚拟机上托管网站的HTML和PHP文件,并在另一台虚拟机上建立Postgresql数据库 我最近安装了Postgresql,并一直在使用Postgresql官方文档学习如何创建数据库、创建用户以及授予和撤销权限 创建名为MFCDST的数据库后,我被命令创建4个不同的用户,这就是我遇到的问题: -第一个用户必须名为admin,并且必须是名为postgres的现有用户之外唯一具有无限权限的用户 -第二个用户(名为cfc)和第三个用户(名为sec)只能对mfc\dst数据库的所有表具有

我的任务是在一台虚拟机上托管网站的HTML和PHP文件,并在另一台虚拟机上建立Postgresql数据库

我最近安装了Postgresql,并一直在使用Postgresql官方文档学习如何创建数据库、创建用户以及授予和撤销权限

创建名为MFCDST的数据库后,我被命令创建4个不同的用户,这就是我遇到的问题:

-第一个用户必须名为admin,并且必须是名为postgres的现有用户之外唯一具有无限权限的用户

-第二个用户(名为cfc)和第三个用户(名为sec)只能对mfc\dst数据库的所有表具有选择更新权限

-第四个/最后一个用户(名为prof)必须只能从名为MFU dst的数据库中查看名为devoir的表

为此,我使用了两种不同的脚本:

CREATEandGRANT.sql

REVOKE ALL ON ALL TABLES IN SCHEMA public TO cfc;
REVOKE ALL ON ALL TABLES IN SCHEMA public TO sec;
REVOKE ALL ON ALL TABLES IN SCHEMA public TO prof;

GRANT CONNECT ON DATABASE mfc_dst TO admin;
GRANT CONNECT ON DATABASE mfc_dst TO cfc;
GRANT CONNECT ON DATABASE mfc_dst TO sec;
GRANT CONNECT ON DATABASE mfc_dst TO prof;

GRANT SELECT,UPDATE
ON ALL TABLES IN SCHEMA public
TO cfc;

GRANT SELECT,UPDATE
ON ALL TABLES IN SCHEMA public
TO sec;

GRANT SELECT ON devoir TO prof;
还有另一个:

REVOKE.sql

REVOKE ALL ON TABLE professeur FROM PUBLIC;
REVOKE ALL ON TABLE reserver FROM PUBLIC;
REVOKE ALL ON TABLE salle FROM PUBLIC;
REVOKE ALL ON TABLE semaine FROM PUBLIC;
REVOKE ALL ON TABLE surveiller FROM PUBLIC;
多亏了这两个脚本,我才能够阻止名为prof的用户查看其他表,但我遇到的问题是,名为cfc、sec和prof的用户仍然能够创建表和删除表

是否有可能知道如何防止他们这样做,如果可能的话,在将来防止新创建的用户拥有这些权限/特权


提前感谢

所有Postgres用户也会自动成为
public
角色的成员,该角色授予他们对
public
架构的所有权限。您可以使用从
public
角色中删除权限

revoke all on database mfc_dst from public;
revoke all on schema public from public;

另外,考虑为数据表定义一个新的模式,这样您就可以发布<代码> Grime语句,而不必再处理<代码>公共< /代码>角色。如果执行此操作,还可以将搜索路径设置为包含自定义架构并排除

public
架构

此外,您可能希望为
cfc
sec
用户创建一个组角色,并将权限分配给该角色,而不是单独分配给用户。这将使将来的维护更容易