我们让 PostgreSQL 在一个 unix 机器上运行,多个用户同时拥有单独的 unix 帐户和单独的数据库登录名。我们试图为这些用户启用的工作流程是:
- 将大文件传输到服务器(通常通过 Samba)
- 建立从用户 PC 到 PostgreSQL 的远程连接
- 将大文件读入(最好是临时)表并进行一些分析
绊脚石是如何在登录 PostgreSQL 时访问文件。乍一看,这似乎不可能安全地进行,因为数据库在该postgres
帐户下运行,该帐户甚至无法访问属于其他 unix 帐户的文件。开箱即用,我相信 PostgreSQL 用户可以访问本地文件的唯一方法是 (a) 使文件可由 unix 帐户读取,以及 (b) 赋予数据库用户提升的权限postgres
以允许他们使用COPY FROM
邮递员。这是不可能的;用户必须不能读取彼此的数据。
我们目前使用的解决方法是进入服务器并运行,这允许用户使用元命令psql
从本地文件中获取数据。\copy
但这会使工作流程复杂化,并且对我们大多数不熟悉 unix 的用户来说并不是很满意。相反,他们希望从称为 SAS 的基于 PC 的分析包驱动整个过程,该分析包可以通过 ODBC 直接连接到 Postgres。
我正在寻找一个创造性的解决方案来解决这个问题。显然,我上面列出的幼稚工作流程与 unix 安全模型完全不一致。但是,从用户的角度来看,是否有其他类似的功能?我们很乐意考虑存储过程、中间人代理等。