数据库 相关文档,希望互相学习,
共同进步
1.背景
oceanbase数据库 load data 时,需要设置系统变量 secure_file_priv,配置导入或导出文件时可以访问的路径,但是执行时报错,提示 OBE-01031: insufficient privileges
本文记录解决的实验处理步骤。
2. 实验
2.1 查询全局变量
代码:
SHOW GLOBAL VARIABLES LIKE 'secure_file_priv';截图:
此时,secure_file_priv 的参数值,默认为空,需要修改为"/" 没有限制
- 空字符串:表示导入、导出被禁用
NULL:表示导入、导出被禁用"NULL":表示导入、导出被禁用- 路径名:表示仅该路径下的文件可以被导入或导出
"/":表示没有限制,任意路径均可访问
从 V4.2.0 版本开始,枚举值空字符串和 NULL 的含义由原来的无限制调整为导入、导出被禁用。
2.2 问题复现
1)连接数据库
obclient -h192.168.3.14 -P2881 -unh_dw_tbl@nhtc_oracle -pxxx
截图:

2)设置文件访问权限
设置为文件所在目录为
/,表示没有限制,任意路径均可访问
SET GLOBAL SECURE_FILE_PRIV = "/";
3)问题复现
报错:OBE-01031: insufficient privileges
4)改用管理员,提示ERROR 1235 (0A000)
可能原因:可能权限不足
于是用root 用户登录
obclient -h192.168.3.14 -P2881 -uroot@sys -p'xxx' -Doceanbase -A
依然报错,提示:ERROR 1235 (0A000): modify SECURE_FILE_PRIV not by unix socket connection not supported
2.3 问题解决

查阅资料:
仅支持通过本地 Unix Socket 连接 OceanBase 数据库。
通过 Unix Socket 方式连接时,只能连接本地 OBServer 节点,同时也需要确保该租户的资源分布在本地 OBServer 节点上,如果该租户的资源未分布在本地 OBServer 节点上,则无法通过本地 OBServer 节点连接到该租户。
-S:提供 本地 OBServer 节点的 Unix Socket 文件路径,位于本地 ObServer 安装目录下的run/sql.sock
find ./ -name sql.sock

发现本地:./oceanbasenhtc/oceanbase_name/run/sql.sock

再次连接尝试:
obclient -S /home/oceanbase/oceanbasenhtc/oceanbase_name/run/sql.sock -h192.168.3.14 -P2881 -unh_dw_tbl@nhtc_oracle -pxxx截图:用普通租户,提示没有权限
改用管理员用户,再次连接,再次尝试修改文件访问权限:ok成功
2.4 再次查询全局变量
SHOW GLOBAL VARIABLES LIKE 'secure_file_priv';
实验验证:ok 
项目管理--相关知识 
项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客
项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客
项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客
Oracle其他文档,希望互相学习,
共同进步
Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客
oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客
ORA-12899报错,遇到数据表某字段长度奇怪现象:"Oracle字符型,长度50"但length查却没有50_varchar(50) oracle 超出截断-CSDN博客





