Read-only user able to create table
我在PostgreSQL中创建了一个只读用户,它仍然可以创建表:
我创建了一个测试数据库,然后创建了一个
1 2 3 4 | CREATE DATABASE test1 CREATE USER readonly2 WITH password 'readonly'; GRANT SELECT ON test1 TO readonly2 GRANT SELECT ON test2 TO readonly2 |
其中
现在,当我以
1 2 | test=> CREATE TABLE test55 (id INT); CREATE TABLE |
我只想创建一个具有select权限的只读用户。 我不想授予create table权限。
每个表都是在Postgres中的模式中创建的。 要创建表,角色必须具有架构的
CREATE
... For schemas, allows new objects to be created within the schema.
要创建的表的默认架构是当前
search_path中的第一个模式通常是与用户或模式
A user can also be allowed to create objects in someone else's schema.
To allow that, theCREATE privilege on the schema needs to be granted.
Note that by default, everyone hasCREATE andUSAGE privileges on the
schema public.
大胆强调我的。
你可以改变:
1 | REVOKE CREATE ON SCHEMA public FROM PUBLIC; |
一定要先考虑后果......
(要么是,要么角色是超级用户。)