文档首页/ 数据仓库服务 GaussDB(DWS)/ 故障排除/ 账号/权限/密码/ 普通用户创建或删除GDS/OBS外表语句时报错,提示没有权限或权限不足
更新时间:2024-07-01 GMT+08:00

普通用户创建或删除GDS/OBS外表语句时报错,提示没有权限或权限不足

问题现象

创建GDS或OBS外表语句时,管理员用户可以执行成功,但普通用户执行时报错“ERROR: permission denied to create foreign table in security mode.”。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
CREATE USER u1 PASSWORD '{password}';
SET current_schema = u;
CREATE FOREIGN TABLE customer_ft
(
    c_customer_sk             integer               ,
    c_customer_id             char(16)              ,
    c_current_cdemo_sk        integer               ,
    c_current_hdemo_sk        integer               ,
    c_current_addr_sk         integer    
)
    SERVER gsmpp_server
    OPTIONS
(
    location 'gsfs://192.168.0.90:5000/customer1*.dat',
    FORMAT 'TEXT' ,
    DELIMITER '|',
    encoding 'utf8',
    mode 'Normal')
READ ONLY;
ERROR:  permission denied to create foreign table in security mode

原因分析

该错误信息说明普通用户没有创建外表的权限。

查询该示例中用户权限:

1
2
3
4
5
SELECT rolname,roluseft FROM pg_roles WHERE rolname ='u1' ORDER BY rolname desc;
 rolname | roluseft
---------+----------
 u1      | f
(1 row)

处理方法

可使用ALTER USER或者ALTER ROLE语法指定USEFT参数赋予角色或用户使用外表的权限。

参数USEFT | NOUSEFT决定一个新角色或用户是否能操作外表,包括:新建外表、删除外表、修改外表、读写外表。

  • 指定USEFT表示角色或用户可操作外表。
  • 缺省为NOUSEFT。表示新角色或用户没有操作外表的权限。
请使用数据库管理员用户给普通用户或角色赋予使用外表的权限,示例如下:
1
ALTER USER user_name USEFT;

修改用户或角色权限等信息的详细内容请参见ALTER USER或者ALTER ROLE

对普通用户或角色赋予使用外表的权限后即可创建外表。