瀚高数据库安全版v4.5.7非root用户运行配置

大家都知道的瀚高数据库安全版都是使用root安装并以root来运行的,之所以是默认只能用root安装是因为有些特殊环境下必须使用root。抛开这些特殊环境,我们也可以让它运行在普通用户下。

操作系统:Centos 7.9,架构:x86_64

瀚高数据库:安全版v4.5.7

(说明:以下每一节的命令操作,均可以复制粘贴直接执行)

Here we go! >>

01. 安装软件

登录 root 用户,将安全版安装包上传到 Centos 目录下,执行以下命令校验安装包完整性:

md5sum -c hgdb4.5.7-see-centos7-x86-64-20210804.rpm.md5

得到结果:hgdb4.5.7-see-centos7-x86-64-20210804.rpm: OK

然后再安装:

rpm -ivh hgdb4.5.7-see-centos7-x86-64-20210804.rpm

02. 用户和组

创建一个组highgo

/usr/sbin/groupadd highgo

创建一个新用户highgo

/usr/sbin/useradd -m -g highgo highgo -c "Highgo DataBase Server"
echo "666666" | passwd --stdin highgo

说明:-c 后面说明的是用户的用途。

03. 相关目录和权限

创建以下目录并设置相应的权限,便于highgo用户能够继续操作和运行:

mkdir -p /data/highgo/data
mkdir -p /data/highgo/hgdbbak/archive
chown -R highgo:highgo /data/highgo
chown -R highgo:highgo /opt/HighGo4.5.7-see
ln -sf /data/highgo/data /opt/HighGo4.5.7-see/data

说明

  1. 这里的/data目录一般是指大容量磁盘的挂载目录。如果目录名不是data,需要修改很多地方,详情咨询瀚高工程师,指导下进行修改;
  2. /data目录下创建highgo目录,用于存储瀚高数据库数据等。在之下又创建了datahgdbbak目录,分别用于数据库实例数据和备份数据;
  3. 最后我们把数据的实际目录data在安装目录/opt/HighGo4.5.7-see/下做了一个软链接。

04. 环境变量

配置用户highgo的环境变量:

cat >> /home/highgo/.bash_profile <<EOF
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb start ##################
source /opt/HighGo4.5.7-see/etc/highgodb.env
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb end ####################
EOF

说明:全部复制执行即可。

切换到用户highgo下:

su - highgo

此时用户highgo的环境变量会生效,后面的操作开始在highgo下执行。

05. 设置初始密码文件

这里的密码文件是方便初始化initdb时候使用的,不用多次输入密码了,如:

echo "Hello@123456"  > /tmp/5866
echo "Hello@123456" >> /tmp/5866
echo "Hello@123456" >> /tmp/5866

注意:这里的密码不是最终密码,后面我们改有效期的时候会更换掉。

06. 初始化数据库簇

接下来我们就需要初始化了,一般国产环境初始化命令如下所示:

initdb -A sm3 -e sm4 -c "echo 12345678" -D $PGDATA --pwfile=/tmp/5866 -E 'UTF8'

说明

  1. 参数-A后面指定的是数据库用户密码加密方式,一般是国密sm3,或者通常使用的md5
  2. 参数-e后面指定的是数据加密方式,如果不想加密,可以去掉-e sm4 -c "echo 12345678"部分;
  3. 参数--pwfile指定的就是上面我们设置的初始密码文件路径了。

07. SSL 证书

SSL 证书是数据库启动需要的文件,创建命令如下:

hg_sslkeygen.sh /opt/HighGo4.5.7-see/data

08. 免密登录文件

创建免密登录文件:

cat > ~/.pgpass <<EOF
host:port:database:user:password
localhost:5866:*:sysdba:Hello@123456
localhost:5866:*:syssao:Hello@123456
localhost:5866:*:syssso:Hello@123456
EOF

修改权限:

chmod 0600 ~/.pgpass

说明:免密登录文件一般在定时备份时使用比较方便,以及psql命令行登录时也可以免密登录。

09. 客户端验证

需要设置一下,否则只能本机访问数据库服务,命令如下:

cat >> $PGDATA/pg_hba.conf <<EOF
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb start ##################
# IPv4 local connections:
host    all             all             0.0.0.0/0               sm3
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb end ####################
EOF

说明

  1. 上面设置允许所有可达主机访问该数据库;
  2. 密码加密方式是sm3,根据需要可以改为其他的加密方式;
  3. 可以更细粒度来设置这里从而达到安全访问的要求。

10. 启动数据库

接下来,我们就可以启动数据库了,命令如下:

pg_ctl start

11. 标准参数设置

以下是常用参数设置,可以根据需要进行微调:

psql highgo sysdba <<EOF
alter system set listen_addresses = '*';
alter system set max_connections = 2000;
alter system set work_mem='16MB';
alter system set shared_buffers = '1GB';
alter system set checkpoint_completion_target = 0.8;
alter system set log_destination = 'csvlog';
alter system set logging_collector = on;
alter system set log_directory = 'hgdb_log';
alter system set log_filename = 'highgodb_%d.log';
alter system set log_rotation_age = '1d';
alter system set log_rotation_size = 0;
alter system set log_truncate_on_rotation = on;
alter system set log_statement = 'ddl';
alter system set log_connections=on;
alter system set log_disconnections=on;
alter system set checkpoint_timeout='30min';
alter system set maintenance_work_mem='1GB';
alter system set archive_mode = on;
alter system set archive_timeout = '30min';
alter system set archive_command = 'cp %p /data/highgo/hgdbbak/archive/%f';
alter system set log_line_prefix = '%m [%p] %a %u %d %r %h';
EOF

注意:根据实际物理内存,修改shared_buffers为物理内存的1/4。

重启生效:

pg_ctl restart

12. 密码有效期

所有用户默认密码有效期是7天,需要执行以下命令来改为永久:

psql highgo syssso <<EOF
select set_secure_param('hg_idcheck.pwdvaliduntil','0');
alter user current_user password 'Hello@123' valid until 'infinity';
\c - sysdba
alter user current_user password 'Hello@123';
\c - syssao
alter user current_user password 'Hello@123';
EOF

记得将免密文件中的旧密码也替换了:

sed -i 's/Hello@123456/Hello@123/g' ~/.pgpass

重启生效:

pg_ctl restart

13. 改善性能

以下参数影响数据库性能,执行命令关掉来改善,如下:

psql highgo syssso <<EOF
select set_secure_param('hg_macontrol','min');
select set_secure_param('hg_rowsecure','off');
select set_secure_param('hg_showlogininfo','off');
select set_secure_param('hg_clientnoinput','0');
select set_secure_param('hg_idcheck.pwdpolicy','high');
EOF

重启生效:

pg_ctl restart

14. 关闭审计功能

该功能默认是开启的,但会占用资源。如没有必要,可以考虑关掉。需要提前沟通好有些测评(等保分保)需要开启。关闭命令如下:

psql highgo syssao <<EOF
select set_audit_param('hg_audit','off');
EOF

重启生效:

pg_ctl restart

15. 安装授权

将授权文件放到目录/opt/HighGo4.5.7-see/data下即可。

16. 服务设置

如果不适用root用户运行,自动配置的服务单元不能自启动,需要做出变更。

切回root用户,执行以下命令,更换服务单元文件:

cat > /usr/lib/systemd/system/hgdb-see-4.5.7.service <<EOF
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb start ##################
[Unit]
Description=hgdb
Requires=network.target local-fs.target
After=network.target local-fs.target[Service]
Type=forkingUser=highgo
Group=highgoEnvironment=PGDATA=/opt/HighGo4.5.7-see/dataOOMScoreAdjust=-1000ExecStart=/opt/HighGo4.5.7-see/bin/pg_ctl start -D \${PGDATA}
ExecStop=/opt/HighGo4.5.7-see/bin/pg_ctl stop -D \${PGDATA}
ExecReload=/opt/HighGo4.5.7-see/bin/pg_ctl reload -D \${PGDATA}
TimeoutSec=60[Install]
WantedBy=multi-user.target graphical.target
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb end ####################
EOF

说明:如果普通用户不是highgo,注意修改上面单元文件例的UserGroup

重载服务单元:

systemctl enable hgdb-see-4.5.7

启动数据库服务:

systemctl start hgdb-see-4.5.7

<< There you go!

【最佳实践】瀚高数据库安全版v4.5.7非root用户运行的安装配置相关推荐

  1. 【最佳实践】瀚高数据库安全版v4.5.8安装

    瀚高数据库安全版v4.5.8已发布,功能和安装方式都有所不同.下面先跟我一起安装上吧. 操作系统环境:Centos7.9,处理器:x86_64 (说明:以下每一节的命令操作,均可以复制粘贴直接执行) ...

  2. 瀚高数据库安全版v4.5.7_凝思v6.0.60_root 运行部署

    瀚高数据库安全版v4.5.7root用户运行配置 导读 目前凝思操作系统大多数用在电力行业,本文主要目的是说明一下如何在凝思v6.0.60系统下安装部署瀚高数据库安全版v4.5.7. 主要面向电力行业 ...

  3. 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)读书笔记

    前言 我在读 深入理解java虚拟机 这本书,把整体其中的关键点标记了,希望自己对它有个不一样的理解,也希望大家能看看这本写的很好的书 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) pd ...

  4. 《深入理解Java虚拟机 - Jvm高级特性与最佳实践(第三版)》阅读笔记

    <深入理解Java虚拟机>阅读笔记 本repository为<深入理解Java虚拟机 - Jvm高级特性与最佳实践(第三版)>阅读笔记,因为第一章主要讲的是Java的发展历史, ...

  5. 最新:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明

    本书一共分为五个部分:走近Java.自动内存管理.虚拟机执行子系统.程序编译与代码优化. 高效并发.各个部分之间基本上是互相独立的,没有必然的前后依赖关系,读者可以从任何一个感兴 趣的专题开始阅读,但 ...

  6. 微信公众平台开发最佳实践(第2版)

    <微信公众平台开发最佳实践 第2版> 微信公众平台开发经典之作全新改版,精心挑选最经典的商业项目开发,成千上万人次微信公众平台开发者从中受益 前言 出版说明 自从方倍工作室在博客园推出微信 ...

  7. python自动化书籍pdf_Python自动化运维技术与最佳实践PDF可复制版电子书免费下载...

    市面上介绍互动的.面向对象的Python编程语言的书有很多,其强大而又灵活的特性,使其成为很多企图通过工具来实现工作(半)自动化的运营同学的首选.更难得的是,本书作者以其在腾讯游戏运营的工作经验,辅以 ...

  8. .NET Core开发实战(定义API的最佳实践)Source Generators版

    前言 极客时间上的<.NET Core开发实战>是一门非常好的课程,作者肖伟宇在第31课(https://time.geekbang.org/course/detail/100044601 ...

  9. 小狐狸ChatGPT付费创作系统1.6.8独立开源版 + 公众号H5+小程序+VUE源码安装配置详细教程

    小狐狸GPT付费体验系统最新版系统是一款基于ThinkPHP框架开发的AI问答小程序,是基于国外很火的ChatGPT进行开发的Ai智能问答小程序.接口模型升级至GTP3.5,播播资源网整体测试下来非常 ...

最新文章

  1. Android 多线程下载 显示进度 速度
  2. python gui打包exe pyinstaller打包运行失败 Failed to execute script pyi_rth_multiprocessing
  3. (网络编程)URL下载网络资源
  4. 不用公钥批量部署机器执行命令_模版
  5. 在高科技产业当中,有时候你的产品出现了问题,你反过来可以把这个问题称为你的特点...
  6. C#高级语法之泛型、泛型约束,类型安全、逆变和协变(思想原理)
  7. 前端学习(2380):调整目录结构
  8. Magento: 产品页面下jquery change函数失效 Call javascript function onchange product option
  9. 新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目
  10. 解决Emacs输出PDF文件时Tex缺少.sty文件的方法
  11. 僵尸启示录开始 Scheming Through Ep1 Mac游戏介绍
  12. 基于51/52单片机毕业设计课题选题表/毕设题目/设计资料
  13. 搜狗站长工具:索引量与收录量的解释,它等同于site的收录吗?
  14. oracle插入新字段脚本
  15. RationalDMIS 2020 RPS坐标系
  16. 天线的极化与圆极化天线
  17. 换手机了备忘录怎么恢复?专家为你解答数据恢复问题
  18. 4G Cat.1跟通常我们说的4G有什么区别
  19. windows下通过关键字批量删除远程k8s下deployment及pods
  20. Feeds流的设计与实现

热门文章

  1. 我的一个BLOGER?!
  2. 弗洛伊德(Floyd)算法
  3. 验证中的FPGA原型验证
  4. [Android]手机通过USB绑定共享电脑网络
  5. 计算机网络按传输速率分类,四、计算机网络分类
  6. Apk的编译打包过程
  7. 运营小技能:分析订阅号文章数据来提升账号权重
  8. 什么是EILOG测井系统
  9. c语言程序设计创新,C语言程序设计课程创新与实践
  10. matlab浮点数求绝对值_在matlab编程中遇到绝对值符号怎么办