以非超级用户身份在 file_fdw 上创建外部 table
Create foreign table on file_fdw as non-superuser
我已经创建了一个 file_fdw 扩展和一个相应的服务器作为超级用户。
CREATE EXTENSION file_fdw;
CREATE SERVER myserver FOREIGN DATA WRAPPER file_fdw;
ALTER SERVER myserver OWNER TO nonsuperuser;
我想让一个非超级用户nonsuperuser
使用这个服务器创建一个外国table
CREATE FOREIGN TABLE test (
a text NULL,
b text NULL
)
SERVER myserver
OPTIONS (filename '/home/me/mycsvfile.csv', format 'csv', header 'true', delimiter ';');
执行此操作会导致“只有超级用户才能更改 file_fdw 外国 table
的选项
如何才能使 nonsuperuser
能够创建外部 table?如果可能的话,我不介意将选项声明为超级用户。
只允许高权限用户访问数据库服务器上的文件,这就是为什么您需要高权限才能创建 file_fdw 国外 table.
从错误消息可以看出,您使用的是旧版本的 PostgreSQL;在较新的版本中,错误消息如下所示:
only superuser or a member of the pg_read_server_files role may specify the filename option of a file_fdw foreign table
因此,作为处理超级用户权限的替代方法,您可以将用户添加到 pg_read_server_files
角色。
升级 PostgreSQL!
我已经创建了一个 file_fdw 扩展和一个相应的服务器作为超级用户。
CREATE EXTENSION file_fdw;
CREATE SERVER myserver FOREIGN DATA WRAPPER file_fdw;
ALTER SERVER myserver OWNER TO nonsuperuser;
我想让一个非超级用户nonsuperuser
使用这个服务器创建一个外国table
CREATE FOREIGN TABLE test (
a text NULL,
b text NULL
)
SERVER myserver
OPTIONS (filename '/home/me/mycsvfile.csv', format 'csv', header 'true', delimiter ';');
执行此操作会导致“只有超级用户才能更改 file_fdw 外国 table
的选项如何才能使 nonsuperuser
能够创建外部 table?如果可能的话,我不介意将选项声明为超级用户。
只允许高权限用户访问数据库服务器上的文件,这就是为什么您需要高权限才能创建 file_fdw 国外 table.
从错误消息可以看出,您使用的是旧版本的 PostgreSQL;在较新的版本中,错误消息如下所示:
only superuser or a member of the pg_read_server_files role may specify the filename option of a file_fdw foreign table
因此,作为处理超级用户权限的替代方法,您可以将用户添加到 pg_read_server_files
角色。
升级 PostgreSQL!