load data导入数据失败“Loading local data is disabled;”

集群只有一个节点,在当前服务器上使用obclient --local-infile -h172.16.59.129 -P2881 -uroot -pXXXX 登陆后,load data操作报错:ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides。
GRANT FILE ON . TO root 和 SET GLOBAL SECURE_FILE_PRIV = “/”; 都操作过了

很抱歉这个错误提示信息不是很明确。

如果需要使用load data local功能,需要保证:

  1. observer版本不低于4.2.2;
  2. obclient 版本不低于 2.2.4;
  3. obproxy 版本不低于 3.2.4(3.x系列) 或 4.2.3(4.x系列)(直连observer无此要求);
  4. objdbc 版本不低于 2.4.8 (如果使用Java + objdbc);

另外,可以直接使用mysql或mariadb原生客户端,对版本没有特殊要求。

MySQL/MariaDB 客户端连接数据库时增加命令行参数 --local-infile

如果版本没有问题,需要设置变量 local_infile 为ON:

-- 开启变量
set @@local_infile=1;
-- 检查变量
show variables like 'local_infile';

关于 SECURE_FILE_PRIV 变量,此变量是控制observer能访问服务端机器上的权限,所以此变量对load local功能无影响,不需要做设置。

2 个赞

mysql> show variables like ‘local_infile’;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| local_infile | OFF |
±--------------±------+
1 row in set (0.02 sec)
mysql有这个变量设置,看看ob的mysql租户里这个变量的设置是否是on

1 个赞

obclient [experiment1]> show variables like ‘local_infile’ ;

±--------------±------+

| Variable_name | Value |

±--------------±------+

| local_infile | ON |

±--------------±------+

1 row in set (0.002 sec)
这个已经设置为on