集群只有一个节点,在当前服务器上使用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功能,需要保证:
- observer版本不低于4.2.2;
- obclient 版本不低于 2.2.4;
- obproxy 版本不低于 3.2.4(3.x系列) 或 4.2.3(4.x系列)(直连observer无此要求);
- 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功能无影响,不需要做设置。
mysql> show variables like ‘local_infile’;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| local_infile | OFF |
±--------------±------+
1 row in set (0.02 sec)
mysql有这个变量设置,看看ob的mysql租户里这个变量的设置是否是on
obclient [experiment1]> show variables like ‘local_infile’ ;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| local_infile | ON |
±--------------±------+
1 row in set (0.002 sec)
这个已经设置为on