当前位置: 首页 > news >正文

衡石分析平台使用手册--替换衡石 metadb

替换衡石 metadb​

在使用 HENGSHI SENSE 服务过程中,可以根据业务需要替换 HENGSHI 自带的 metadb。本文讲述使用云服务 PostgreSQL 替代衡石 metadb 的过程。

准备工作​

在进行配置前,请在云服务 PostgreSQL 上完成如下准备工作。

  1. [必须] 配置衡石业务数据库 创建用户和数据库,可参考下面示例进行操作,示例中用户名和账户名均为 hengshi。

    sql
    DO $body$ BEGIN IF NOT EXISTS (SELECT * FROM pg_catalog.pg_user WHERE  usename = 'hengshi') THEN CREATE ROLE hengshi CREATEDB CREATEROLE LOGIN PASSWORD 'hengshi202020'; END IF; END $body$;
    set role hengshi;
    create database hengshi;
    create database hengshi_sense_internal_storage;
    reset role;

  2. [必须] 配置衡石日志数据库 创建衡石日志用户,建立衡石日志数据库,并将数据库权限授权给衡石日志用户。 参考下面示例进行日志用户相关准备工作。

    sql
    \c hengshi
    DO $body$ BEGIN IF NOT EXISTS (SELECT * FROM pg_catalog.pg_user WHERE usename = 'syslog') THEN CREATE ROLE syslog LOGIN PASSWORD 'syslog'; END IF; END $body$;
    GRANT ALL PRIVILEGES ON DATABASE hengshi to syslog;
    CREATE DATABASE syslog;
    GRANT ALL PRIVILEGES ON DATABASE syslog to syslog;

  3. [可选] 配置只读账号 准备只读帐号(此操作在成功启动衡石服务后进行配置)。参考下面示例,设置只读账户。

    sql
    \c hengshi
    DO $body$ BEGIN IF NOT EXISTS (SELECT * FROM pg_catalog.pg_user WHERE  usename = 'hsro') THEN CREATE ROLE hsro LOGIN PASSWORD 'hsro202020'; END IF; END $body$;
    GRANT USAGE ON SCHEMA public TO hsro;
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO hsro;
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO hsro;
    GRANT USAGE ON SCHEMA quartz TO hsro;
    ALTER DEFAULT PRIVILEGES IN SCHEMA quartz GRANT SELECT ON TABLES TO hsro;
    GRANT SELECT ON ALL TABLES IN SCHEMA quartz TO hsro;

  4. [可选] 配置衡石向量数据库 创建 pg_vector 向量数据库账号以及授予权限. 参考下面用户名为 vector 的示例。

    sql
    DO $body$ BEGIN IF NOT EXISTS (SELECT * FROM pg_catalog.pg_user WHERE usename = 'vector') THEN CREATE ROLE vector LOGIN PASSWORD 'vector20242024'; END IF; END $body$;
    CREATE DATABASE vector owner=vector;
    GRANT ALL PRIVILEGES ON DATABASE vector to vector;

  5. [必须] 配置衡石业务库权限 使用超级管理员账号对用户进行授权操作 Hengshi-sense 版本>=4.4,要求云服务 PostgreSQL 数据库 hengshi 用户需要具备 hengshi、hengshi_sense_internal_storage 这两个数据库的 pg_catalog(schema)的 CREATE/USAGE 权限,或者 hengshi 用户拥有超级管理员权限

    • 查询 hengshi 用户是否具备超级管理员权限
    sql
    select usename from pg_catalog.pg_user where usesuper = 't' and usename = 'hengshi';
    # 查询结果不为空即表示 hengshi 用户具有超级管理员权限

提示

如果 hengshi 用户具有超级管理员权限忽略下述步骤

* 依次连接 hengshi、hengshi_sense_internal_storage 数据库,进行授权操作

sql

\c hengshi
GRANT ALL ON SCHEMA pg_catalog TO hengshi;
\c hengshi_sense_internal_storage
GRANT ALL ON SCHEMA pg_catalog TO hengshi;

* 依次连接 hengshi、hengshi_sense_internal_storage 数据库,查询授权操作是否成功

sql

\c hengshi
select nspname,pri_t,rolname from (SELECT nspname, (aclexplode(COALESCE(nspacl, acldefault('n', nspowner)))).grantee        AS grantee, (aclexplode(COALESCE(nspacl, acldefault('n', nspowner)))).privilege_type AS pri_t FROM pg_namespace WHERE nspname = 'pg_catalog') a left join pg_roles b on a.grantee=b.oid where rolname = 'HS_PG_USR';
\c hengshi_sense_internal_storage
select nspname,pri_t,rolname from (SELECT nspname, (aclexplode(COALESCE(nspacl, acldefault('n', nspowner)))).grantee        AS grantee, (aclexplode(COALESCE(nspacl, acldefault('n', nspowner)))).privilege_type AS pri_t FROM pg_namespace WHERE nspname = 'pg_catalog') a left join pg_roles b on a.grantee=b.oid where rolname = 'HS_PG_USR';

* 授权成功查询结果如下,说明 hengshi 用户已拥有 USAGE、CREATE 权限
nspnamepri_trolname
pg_catalogUSAGEHS_PG_USR
pg_catalogCREATEHS_PG_USR
  • 使用 hengshi 用户依次连接 hengshi、hengshi_sense_internal_storage 数据库,使用下列 sql 验证用户权限,执行未出现错误信息即完成授权操作sql
    CREATE OR REPLACE FUNCTION pg_catalog.myTestCreate(text)RETURNS numericIMMUTABLE STRICT AS$$BEGINRETURN $1::numeric;EXCEPTIONWHEN OTHERS THENRETURN NULL;END$$ LANGUAGE plpgsql;select myTestCreate('123');DROP FUNCTION pg_catalog.myTestCreate(text);

修改数据库相关配置​

在文件conf/hengshi-sense-env.sh中修改如下配置项,然后重新启动 HENGSHI SENSE。重启后,衡石 metadb 替换成功。

shell

HS_PG_HOST=xxx         #衡石业务数据库 host
HS_PG_PORT=5432        #衡石业务数据库 port
HS_PG_DB="hengshi"     #衡石业务数据库 dbname
HS_PG_USR=hengshi      #衡石业务数据库 user
HS_PG_PWD="hengshi"    #衡石业务数据库 passwordexport INTERNAL_STORAGE_DB_NAME="hengshi_sense_internal_storage"  #衡石内部存储数据库HS_SYSLOG_HOST=xxxx    #衡石日志数据库 host (一般与业务数据库一致)
HS_SYSLOG_PORT=5432    #衡石日志数据库 port (一般与业务数据库一致)
HS_SYSLOG_DB=syslog    #衡石日志数据库 dbname
HS_SYSLOG_USR=syslog   #衡石日志数据库 user
HS_SYSLOG_PWD=syslog   #衡石日志数据库 passwordHS_VECTOR_HOST=xxx      # 衡石向量数据库 host
HS_VECTOR_PORT=5432     # 衡石向量数据库 port
HS_VECTOR_DB=vector     # 衡石向量数据库 dbname
HS_VECTOR_USER=vector   # 衡石向量数据库 user
HS_VECTOR_PASSWORD=vector20242024   # 衡石向量数据库 password

http://www.mrgr.cn/news/27986.html

相关文章:

  • 网络安全练习之 ctfshow_web
  • Android View 调用基础 通用属性基础 方法场景说明
  • Spring Boot 中使用 @Transactional 注解配置事务管理
  • C#中 layout的用法
  • 五、函数封装及调用、参数及返回值、作用域、匿名函数、立即执行函数
  • 实现金蝶云与MySQL的无缝数据集成
  • Oracle(128)如何使用闪回版本查询(Flashback Versions Query)?
  • python selenium网页操作
  • SOMEIP_ETS_110: SD_Do_not_specify_IPv4_Adress
  • 寄存器的位数据调测方法(摩尔信使MThings)
  • Mysql练习3——基本的SELECT语句
  • 贪吃蛇项目
  • 一文了解什么是TTP — 技术、战术与程序
  • 二分算法——优选算法
  • linux进程优先级
  • 多态(下)【C++】
  • Python酷库之旅-第三方库Pandas(117)
  • Python--常见的数据格式转换
  • 数据中台过时了?是否需要升级到数据飞轮?
  • 【字幕】恋上数据结构与算法之013动态数组01线性表
  • JavaScript 函数式编程之函子相关代码分享
  • pip install、yum install和conda install三者技术区分
  • jwt报错,位置:找不到符号 parseClaimsJws(java.lang.String)
  • 并发容器(Map、List、Set)实战及其原理分析
  • 在javascript中对象的键为什么只能是字符串或Symbol?
  • C++速通LeetCode简单第17题-爬楼梯