我有一个应用程序,而不需要为每个客户使用单独的架构(财务数据)。每个租户都是一个“公司”。从公司内部,无法访问同一数据库服务器中的其他公司。
数据库用户必须允许架构内的任何内容,包括执行数据库迁移。最终用户的实际安全性是由应用逻辑决定的。
这就是我所拥有的(TEMPLATE被公司标准化名称替换):
DROP SCHEMA IF EXISTS TEMPLATE CASCADE;
CREATE ROLE TEMPLATE
WITH
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
INHERIT
CONNECTION LIMIT -1;
CREATE SCHEMA AUTHORIZATION TEMPLATE;
SELECT set_schema('TEMPLATE');
-- rest of db creation...
够了吗?