Postgresql

PostgreSQL,如何只保留一個模式?

  • April 18, 2013

我不希望某些使用者可以創建模式,而只使用公共模式。

我想刪除創建模式的權限,但在 PotsgreSQL 9.1 文件中找不到任何內容。我怎樣才能做到這一點?

的文件GRANT說以下內容:

創建

For databases, allows new schemas to be created within the database.

For schemas, allows new objects to be created within the schema. To rename an 
existing object, you must own the object and have this privilege for the containing schema.

所以讓我們簡單地試試這個。我為此目的創建了一個使用者,如果您查看它,它具有CREATEDB屬性,只是為了澄清哪個CREATE權限指的是什麼。

CREATE USER schematest WITH LOGIN CREATEDB PASSWORD 'secure';

REVOKE CREATE ON DATABASE access_test FROM schematest;

GRANT CREATE ON SCHEMA public TO schematest;

這些導致以下行為:

CREATE SCHEMA other_schema;

ERROR: permission denied for database access_test
SQL state: 42501

到目前為止一切順利:使用者無法創建新模式。讓我們看看它是否可以在public模式中創建對象:

CREATE public.simple_table(id integer);

Query returned successfully with no result in 181 ms.

萬歲!

引用自:https://dba.stackexchange.com/questions/40303