gpt4 book ai didi

sql - 只读用户可以创建表

转载 作者:行者123 更新时间:2023-11-29 12:12:42 25 4
gpt4 key购买 nike

我在 PostgreSQL 中创建了一个只读用户,它仍然可以创建表:

我创建了一个测试数据库,然后创建了一个 readonly2 用户。只给它选择 2 个表的权限。当我以 readonly2 用户身份登录此数据库时,我仍然能够创建表:

create database test1
create user readonly2 with password 'readonly';
grant select on test1 to readonly2
grant select on test2 to readonly2

其中 test1test2 是测试数据库中的 2 个表。

现在,当我以 readonly2 用户身份登录测试数据库时,我能够创建表:

test=> create table test55 (id int);
CREATE TABLE

我只想创建一个具有选择权限的只读用户。我不想授予创建表权限。

最佳答案

每个表都是在 Postgres 的模式中创建的。要创建表,角色必须具有 schemaCREATE 权限。 Per documentation:

CREATE

... For schemas, allows new objects to be created within the schema.

创建表的默认模式是当前 search_path 的第一个模式.

search_path 中的第一个模式通常是与用户同名的模式或模式 public

还有 public schema带有默认权限:

A user can also be allowed to create objects in someone else's schema. To allow that, the CREATE privilege on the schema needs to be granted. Note that by default, everyone has CREATE and USAGE privileges on the schema public.

大胆强调我的。

你可以改变它:

REVOKE CREATE ON SCHEMA public FROM PUBLIC;

一定要先考虑后果...

(要么,要么角色是 super 用户。)

关于sql - 只读用户可以创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com