PostgreSQL中是否可以创建只能访问单个模式的用户?
以下是我的尝试:
var nodeWorkShift = $('<div>' + stringWorkShift + '</div>');
var $contents = $(contents).find(selector).append(nodeWorkShift).end();
// string representation of the collection
console.log( $contents.prop('outerHTML') );
当我以 testuser 连接时,我确实无法访问实际数据:
REVOKE ALL ON DATABASE testdb FROM public;
GRANT CONNECT ON DATABASE testdb TO testuser;
但是,我仍然可以列出所有其他模式中的所有表格等:
> SELECT * FROM some_table;
ERROR: permission denied for relation some_table
答案 0 :(得分:1)
无法配置PostgreSQL,以便用户只能在系统目录中查看他或她有权限的那些对象。
如果您需要这样的设置,您应该为每个用户创建一个数据库。
答案 1 :(得分:1)
我能够这样做:
GRANT USAGE ON SCHEMA schema_name TO user_name;
ALTER USER user_name SET search_path = schema_name;
这样的ALTER USER
语句是一种永久设置模式搜索路径的方式,就像设置单个会话的模式搜索路径一样
SET SEARCH_PATH= schema_name_1, schema_name_2;