瀚高数据库安全版v4.5.7非root用户
运行配置
一般来说瀚高数据库安全版是root用户运行的,也可以用普通用户运行,如:highgo
。
操作系统:Centos 7.9
,架构:x86_64
瀚高数据库:安全版v4.5.7
,包类型:rpm
(获取安装包,请联系400-708-8006
)
(说明:以下每一节的命令操作,均可以复制粘贴直接执行)
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 -vsf /data/highgo/data /opt/HighGo4.5.7-see/data
说明:
- 这里的
/data
目录一般是指大容量磁盘的挂载目录。如果目录名不是data
,需要修改很多地方,详情咨询瀚高工程师,指导下进行修改;- 在
/data
目录下创建highgo
目录,用于存储瀚高数据库数据等。在之下又创建了data
和hgdbbak
目录,分别用于数据库实例数据和备份数据;- 最后我们把数据的实际目录
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 -A sm3 -e sm4 -c "echo 12345678" -D $PGDATA -E 'UTF8' \
--pwfile=<(printf "%.0sHello@123456\n" {1..3})
说明:
- 参数
-A
后面指定的是数据库用户密码加密方式,一般是国密sm3
,或者通常使用的md5
;- 参数
-e
后面指定的是数据加密方式,如果不想加密,可以去掉-e sm4 -c "echo 12345678"
部分;- 参数
--pwfile
指定密码是“Hello@123456”。这里的密码不是最终密码,后面我们改有效期的时候会更换掉。尽量不要去改动这个参数。
06. SSL 证书
SSL 证书是数据库启动需要的文件,创建命令如下:
hg_sslkeygen.sh /opt/HighGo4.5.7-see/data
07. 免密登录文件
创建免密登录文件:
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
命令行登录时也可以免密登录;- 安全性要求高的环境,请谨慎设置,尽量细粒度最小化该文件。
08. 客户端验证
需要设置一下,否则只能本机访问数据库服务,命令如下:
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
说明:
- 上面设置允许所有可达主机访问该数据库;
- 密码加密方式是
sm3
,根据需要可以改为其他的加密方式;- 可以更细粒度来设置这里从而达到安全访问的要求。
09. 启动数据库
接下来,我们就可以启动数据库了,命令如下:
pg_ctl start
10. 标准参数设置
以下是常用参数设置,可以根据需要进行微调:
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
11. 密码有效期
所有用户默认密码有效期是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
12. 改善性能
以下参数影响数据库性能,执行命令关掉来改善,如下:
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
13. 关闭审计功能
该功能默认是开启的,但会占用资源。如没有必要,可以考虑关掉。需要提前沟通好有些测评(等保分保)需要开启。关闭命令如下:
psql highgo syssao <<-EOF
select set_audit_param('hg_audit','off');
EOF
重启生效:
pg_ctl restart
14. 安装授权
将授权文件放到目录/opt/HighGo4.5.7-see/data
下即可。
15. 服务设置
如果不适用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=forking
User=highgo
Group=highgo
Environment=PGDATA=/opt/HighGo4.5.7-see/data
OOMScoreAdjust=-1000
ExecStart=/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
,注意修改上面单元文件例的User
和Group
。
重载服务单元:
systemctl enable hgdb-see-4.5.7
启动数据库服务:
systemctl start hgdb-see-4.5.7
<< There you go!