达梦数据库配置手册中如何设置SQLBot访问权限?

摘要:介绍 先快速了解一下 SQLBot。 SQLBot 是一款由飞致云 DataEase 开源团队出品、基于大语言模型(LLM)和 RAG(检索增强生成)技术的智能问数系统。它的核心价值在于,用户可以通过自然语言的方式直接向数据库“提问”,系统
介绍 先快速了解一下 SQLBot。 SQLBot 是一款由飞致云 DataEase 开源团队出品、基于大语言模型(LLM)和 RAG(检索增强生成)技术的智能问数系统。它的核心价值在于,用户可以通过自然语言的方式直接向数据库“提问”,系统会自动解析问题意图,生成 SQL 语句,执行查询并以图表或文字形式返回结果。 SQLBot 能帮助用户降低数据分析门槛,实现数据的即时洞察。 在国产信创越来越重要的当下,国产数据库的使用越来越广泛。SQLBot 也紧跟步伐,提供各种国产数据库的连接支持。但有些国产数据库,在部署时需要通过另外的驱动安装配置才能正常连接到数据库。 这里对 SQLBot 如何配置连接达梦数据库进行详细的操作说明。 问题说明 通常安装部署好 SQLBot 之后(在线通过 Docker 安装,离线通过 bash install.sh 命令安装。离线安装实际也是使用了 Docker),添加达梦数据库数据源时,会遇到以下报错: [CODE:-70089]Encryption module failed to load 这是一个 dmPython 使用错误,dmPython 依赖于一个加密动态库(如 libdmcrypto.so)来处理数据传输过程中的加密和解密,SQLBot 的 Docker 容器内部并不包含这个加密模块,因此 dmPython 驱动在加载时就会因找不到关键依赖而失败。 虽然达梦官方提供了解决方案([CODE:-70089]Encryption module failed to load),但流程很繁琐。经过一阵子的踩坑与尝试,这里提供一种更加便捷的方式。 解决方案 默认已在 Linux 服务器上已经安装好了 SQLBot。 1. 安装 Python3 和 pip3 确保宿主机安装了 Python3 和 pip3。 # 对于 CentOS/RHEL 系统 sudo yum install -y python3 python3-pip # 对于 Ubuntu/Debian 系统 sudo apt-get update sudo apt-get install -y python3 python3-pip 不使用 Python2 版本是因为 dmPython 现有版本已经不再提供兼容 Python 2.7 的安装包,使用 pip 安装 dmPython 会报错如下:` ERROR: Could not find a version that satisfies the requirement dmPython (from versions: none) ERROR: No matching distribution found for dmPython 2. 安装 dmPython 驱动 使用 pip3 命令安装达梦官方提供的 Python 驱动 pip3 install dmPython 3. 查询 dmPython 安装位置 安装完成后需要找到 dmPython 驱动文件的确切位置。这是它运行所依赖的动态库: pip3 show dmPython 在输出的信息中,找到 Location 字段,该路径就是 dmPython 的安装目录。输出信息中会看到例如下地址: [root@temp sqlbot]# pip3 show dmPython Error processing line 1 of /usr/local/lib/python3.6/site-packages/dmPython.pth: Traceback (most recent call last): File "/usr/lib64/python3.6/site.py", line 168, in addpackage exec(line) File "<string>", line 1, in <module> File "/usr/local/lib64/python3.6/site-packages/dmdpi.py", line 3, in <module> import pip ModuleNotFoundError: No module named 'pip' Remainder of file ignored Name: dmPython Version: 2.5.4 Summary: Python interface to Dameng Home-page: UNKNOWN Author: UNKNOWN Author-email: UNKNOWN License: Python Software Foundation License Location: /usr/local/lib64/python3.6/site-packages Requires: 有一个错误信息显示 dmPython 模块的 .pth 文件有问题,但这个不重要,只是一个 .pth 文件的处理错误,不影响 dmPython 模块的正常使用。模块本身已经安装成功。 重点是找到 Location: /usr/local/lib64/python3.6/site-packages,dmPython 的安装目录地址。 4. 复制驱动到 SQLBot 目录 在刚刚找到的 dmPython 的安装目录下,会有一个名为 dpi 的文件夹,这里面包含了达梦驱动所需的所有核心动态库文件。如下: [root@temp dpi]# ll 总用量 46008 -rw-r--r-- 1 root root 3254862 12月 1 10:56 libcrypto.so -rw-r--r-- 1 root root 31695568 12月 1 10:56 libdmdpi.a -rw-r--r-- 1 root root 11423352 12月 1 10:56 libdmdpi.so -rw-r--r-- 1 root root 732592 12月 1 10:56 libssl.so 我们需要将这些文件复制到 SQLBot 可以访问的位置。 根据 SQLBot 官网的建议,统一将其复制到 SQLBot 的安装目录 /opt/sqlbot/bin 下。 sudo cp -r <your-dmPython-location>/dpi/* /opt/sqlbot/bin/ 注意,需要将 your-dmPython-location 替换为上一步中查到的实际路径。 执行后,libdmcrypto.so 等关键文件就被放置在了 /opt/sqlbot/bin 目录中。 5. 修改 docker-compose.yml 文件 需要告诉 SQLBot 的 Docker 容器: 在哪里可以找到这些动态库文件。 将宿主机的驱动文件目录挂载到容器内部。 所以要编辑 /opt/sqlbot 目录下的 docker-compose.yml 文件,在对应的 services.sqlbot 配置下添加 environment 配置,在 volumes 最后一行添加驱动文件挂载 services: sqlbot: image: registry.cn-qingdao.aliyuncs.com/dataease/sqlbot:v1.2.1 container_name: sqlbot restart: always privileged: true networks: - sqlbot-network ports: - ${SQLBOT_WEB_PORT}:8000 - ${SQLBOT_MCP_PORT}:8001 env_file: - conf/sqlbot.conf # 新增 environment environment: - DM_HOME=/opt/dmdbms - LD_LIBRARY_PATH=/opt/dmdbms/bin volumes: - ./data/sqlbot/excel:/opt/sqlbot/data/excel - ./data/sqlbot/file:/opt/sqlbot/data/file - ./data/sqlbot/images:/opt/sqlbot/images - ./data/sqlbot/logs:/opt/sqlbot/app/logs - ./data/postgresql:/var/lib/postgresql/data # 新增挂载 - /opt/sqlbot/bin:/opt/dmdbms/bin networks: sqlbot-network: environment: 设置名为 LD_LIBRARY_PATH 和 DM_HOME 的环境变量,它是 Linux 系统用于查找动态库的路径,将其指向容器内的 /opt/dmdbms/bin 目录。 volumes: 通过卷挂载将宿主机的 /opt/sqlbot/bin 目录映射到容器内的 /opt/dmdbms/bin 目录。这样容器启动后就能在 /opt/dmdbms/bin 目录中找到所有必需的达梦驱动文件了。 6. 重启 SQLBot 所有配置文件修改完成后,保存并退出。执行 SQLBot 的重启命令,让新的配置生效。 sctl restart 验证连接 回到 SQLBot 的 Web 界面,再次尝试添加达梦数据库数据源。添加成功。 总结 通过以上步骤可以成功解决 SQLBot 通过安装部署后无法连接达梦数据库的问题。 核心思路是,宿主机准备完整的 dmPython 驱动依赖,通过修改 docker-compose.yml 文件,配置环境变量让容器内的程序知道去哪里加载它。 该流程可以更加便捷顺利的将 SQLBot 与达梦数据库集成。