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

打印 上一主题 下一主题

主题 830|帖子 830|积分 2490

替换衡石 metadb​

在利用 HENGSHI SENSE 服务过程中,可以根据业务须要替换 HENGSHI 自带的 metadb。本文报告利用云服务 PostgreSQL 替换衡石 metadb 的过程。
准备工作​

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

  • [必须] 配置衡石业务数据库 创建用户和数据库,可参考下面示例进行操作,示例中用户名和账户名均为 hengshi。
    sql
    1. 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$;
    2. set role hengshi;
    3. create database hengshi;
    4. create database hengshi_sense_internal_storage;
    5. reset role;
    复制代码

  • [必须] 配置衡石日志数据库 创建衡石日志用户,建立衡石日志数据库,并将数据库权限授权给衡石日志用户。 参考下面示例进行日志用户相关准备工作。
    sql
    1. \c hengshi
    2. 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$;
    3. GRANT ALL PRIVILEGES ON DATABASE hengshi to syslog;
    4. CREATE DATABASE syslog;
    5. GRANT ALL PRIVILEGES ON DATABASE syslog to syslog;
    复制代码

  • [可选] 配置只读账号 准备只读帐号(此操作在成功启动衡石服务后进行配置)。参考下面示例,设置只读账户。
    sql
    1. \c hengshi
    2. 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$;
    3. GRANT USAGE ON SCHEMA public TO hsro;
    4. ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO hsro;
    5. GRANT SELECT ON ALL TABLES IN SCHEMA public TO hsro;
    6. GRANT USAGE ON SCHEMA quartz TO hsro;
    7. ALTER DEFAULT PRIVILEGES IN SCHEMA quartz GRANT SELECT ON TABLES TO hsro;
    8. GRANT SELECT ON ALL TABLES IN SCHEMA quartz TO hsro;
    复制代码

  • [可选] 配置衡石向量数据库 创建 pg_vector 向量数据库账号以及授予权限. 参考下面用户名为 vector 的示例。
    sql
    1. 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$;
    2. CREATE DATABASE vector owner=vector;
    3. GRANT ALL PRIVILEGES ON DATABASE vector to vector;
    复制代码

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

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


提示
如果 hengshi 用户具有超级管理员权限忽略下述步调
  1. * 依次连接 hengshi、hengshi_sense_internal_storage 数据库,进行授权操作
复制代码
sql
  1. \c hengshi
  2. GRANT ALL ON SCHEMA pg_catalog TO hengshi;
  3. \c hengshi_sense_internal_storage
  4. GRANT ALL ON SCHEMA pg_catalog TO hengshi;
复制代码

  1. * 依次连接 hengshi、hengshi_sense_internal_storage 数据库,查询授权操作是否成功
复制代码
sql
  1. \c hengshi
  2. 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';
  3. \c hengshi_sense_internal_storage
  4. 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';
复制代码

  1. * 授权成功查询结果如下,说明 hengshi 用户已拥有 USAGE、CREATE 权限
复制代码
nspnamepri_trolnamepg_catalogUSAGEHS_PG_USRpg_catalogCREATEHS_PG_USR

  • 利用 hengshi 用户依次连接 hengshi、hengshi_sense_internal_storage 数据库,利用下列 sql 验证用户权限,实行未出现错误信息即完成授权操作sql
    1. CREATE OR REPLACE FUNCTION pg_catalog.myTestCreate(text)
    2. RETURNS numeric
    3. IMMUTABLE STRICT AS
    4. $$
    5. BEGIN
    6. RETURN $1::numeric;
    7. EXCEPTION
    8.      WHEN OTHERS THEN
    9.          RETURN NULL;
    10. END
    11. $$ LANGUAGE plpgsql;
    12. select myTestCreate('123');
    13. DROP FUNCTION pg_catalog.myTestCreate(text);
    复制代码

修改数据库相关配置​

在文件conf/hengshi-sense-env.sh中修改如下配置项,然后重新启动 HENGSHI SENSE。重启后,衡石 metadb 替换成功。
shell
  1. HS_PG_HOST=xxx         #衡石业务数据库 host
  2. HS_PG_PORT=5432        #衡石业务数据库 port
  3. HS_PG_DB="hengshi"     #衡石业务数据库 dbname
  4. HS_PG_USR=hengshi      #衡石业务数据库 user
  5. HS_PG_PWD="hengshi"    #衡石业务数据库 password
  6. export INTERNAL_STORAGE_DB_NAME="hengshi_sense_internal_storage"  #衡石内部存储数据库
  7. HS_SYSLOG_HOST=xxxx    #衡石日志数据库 host (一般与业务数据库一致)
  8. HS_SYSLOG_PORT=5432    #衡石日志数据库 port (一般与业务数据库一致)
  9. HS_SYSLOG_DB=syslog    #衡石日志数据库 dbname
  10. HS_SYSLOG_USR=syslog   #衡石日志数据库 user
  11. HS_SYSLOG_PWD=syslog   #衡石日志数据库 password
  12. HS_VECTOR_HOST=xxx      # 衡石向量数据库 host
  13. HS_VECTOR_PORT=5432     # 衡石向量数据库 port
  14. HS_VECTOR_DB=vector     # 衡石向量数据库 dbname
  15. HS_VECTOR_USER=vector   # 衡石向量数据库 user
  16. HS_VECTOR_PASSWORD=vector20242024   # 衡石向量数据库 password
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

雁过留声

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表