我是 Postgresql 的新手,这就是为什么我无法弄清楚这里的一些权限。
名为
Denemedb23
的数据库已创建。我创建了用户NoxUser
。
我执行了这些命令:
REVOKE ALL PRIVILEGES ON DATABASE Denemedb23 FROM public;
GRANT CONNECT ON DATABASE Denemedb23 TO NoxUser;
我希望
Noxuser
只是能够登录数据库,他不应该能够创建表/函数等。但是NoxUser
可以在数据库中创建表。
你能帮我找出原因吗?
PostgreSQL 中的 CONNECT 权限允许用户建立与数据库的连接,但它不为用户提供创建表或执行其他任务的权力。
在您的实例中,您已向 NoxUser 授予 CONNECT 权限,并删除公共角色的所有数据库权限。但是,为了创建表,需要对架构具有 CREATE 权限。
因此,请确保用户对架构没有 CREATE 权限,以实现允许 NoxUser 连接到数据库但阻止他们创建表的目标。
运行这些命令,这些命令保证虽然 NoxUser 可以连接到 Denemedb23 数据库,但无法在公共架构中创建表。
REVOKE CREATE ON SCHEMA public FROM public;
GRANT CONNECT ON DATABASE Denemedb23 TO NoxUser;
希望对你有帮助:)