撤销特权"创建表格"来自公共架构但不来自自定义架构

时间:2015-10-27 21:49:48

标签: postgresql-9.4

我正在尝试创建一个只能使用" SELECT"在mydb_schema内。

我能够从特定角色撤销在我的数据库(mydb)中的公共模式中创建表,但是我无法撤销模式中的表的创建(mydb_schema),分配了角色(user_role)至。

有人可以协助吗?我错过了什么?

以下是我用作用户postgres和架构所有者的命令。最后,我还使用noinherit改变了postgres帐户,就像绝望的测试一样。没有结果。

\c mydb
 mydb=# create role user_account
 mydb=# alter role user_account login noinherit;
 mydb=# alter role user_account set search_path = 'mydb_schema';
 ##Up until this point I don't have SELECT pivileges but I can create a table within mydb_schema only and not in public.
 mydb=# grant select on all tables in schema mydb_schema to user_account;
 mydb=# revoke CREATE on SCHEMA public from public;

这些是我的数据库:

List of databases
Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   |  Size   | Tablespace |                Description
--------------------------------------------------------------------------
postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 6820 kB | pg_default | default administrative connection database
mydb      | seeker   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/seeker           +| 3465 MB | pg_default |
                                                              seeker=CTc/seeker 

这些是我的模式:

                          List of schemas
  Name      |  Owner   |  Access privileges   |      Description
----------------+----------+----------------------+------------------------
 public         | postgres | postgres=UC/postgres | standard public schema
 mydb_schema    | seeker   | seeker=UC/seeker    +|
                |          | =UC/seeker           |

1 个答案:

答案 0 :(得分:0)

找到解决方案here in dba.stackexchange

alter role servers_admin set default_transaction_read_only =' ON';