我正在尝试创建一个只能使用" 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 |
答案 0 :(得分:0)
找到解决方案here in dba.stackexchange
alter role servers_admin set default_transaction_read_only =' ON';