瀚高数据库安全版v4.5.9 安装部署之:非 root 用户运行

瀚高数据库安全版v4.5.9 安装部署之:非 root 用户运行

瀚高数据库可以运行在普通用户下,通常会先新建一个用户highgo

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

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

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

Here we go! >>

01. 安装软件

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

md5sum -c hgdb-see-4.5.9-3806904.x86_64.rpm.md5 

得到结果:hgdb-see-4.5.9-3806904.x86_64.rpm: OK

然后再安装:

rpm -ivh hgdb-see-4.5.9-3806904.x86_64.rpm

如果是Debian系的操作系统,可以这样操作:

md5sum -c hgdb-see_4.5.9-3806904_amd64.deb.md5
dpkg -i hgdb-see_4.5.9-3806904_amd64.deb

02. 组和用户

创建用户组highgo以及新用户highgo

/usr/sbin/groupadd highgo
/usr/sbin/useradd -m -g highgo highgo -c "Highgo DataBase Server"
echo "highgo:Hello@123" | chpasswd

Debian系操作系统请这样创建:

adduser highgo --ingroup highgo --comment "Highgo DataBase Server" --disabled-password
echo "highgo:Hello@123" | chpasswd

说明

  1. -c 后面说明的是用户的用途;
  2. echo 后面是密码,当前设置“Hello@123”;

03. 相关目录和权限

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

mkdir -p /home/highgo/data
mkdir -p /home/highgo/hgdbbak/archive
chown -R highgo:highgo /home/highgo
chown -R highgo:highgo /opt/highgo
ln -vsf /home/highgo/data /opt/highgo/hgdb-see-4.5.9/data

说明

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

04. 环境变量

配置用户highgo的环境变量:

cat >> /home/highgo/.bash_profile <<EOF
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb start ##################
export HG_BASE=/opt/highgo
export HGDB_HOME=/opt/highgo/hgdb-see-4.5.9
export PGPORT=5866
export PGDATABASE=highgo
export PATH=\$HGDB_HOME/bin:\$PATH
export PGDATA=\$HGDB_HOME/data
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb end ####################
EOF

说明:全部复制执行即可,不要只复制里面的 export 命令行,如果真要这么做,请把$前面的\去掉。

切换到用户highgo下:

su - highgo

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

如果是Debian系的操作系统,环境变量这样设置:

cat >> /home/highgo/.bashrc<<EOF
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb start ##################
export HG_BASE=/opt/highgo
export HGDB_HOME=/opt/highgo/hgdb-see-4.5.9
export PGPORT=5866
export PGDATABASE=highgo
export PATH=\$HGDB_HOME/bin:\$PATH
export PGDATA=\$HGDB_HOME/data
################## add by Highgo at `date +%Y-%m-%d_%H:%M:%S` for hgdb end ####################
EOF

05. 初始化数据库实例

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

initdb -A sm3 -e sm4 -c "echo 12345678" -D $PGDATA --pwfile=<(printf "%s\n%s\n%s\n" "Hello@123456" "Hello@123456" "Hello@123456") -E 'UTF8'

说明

  1. 参数-A后面指定的是数据库用户密码加密方式,一般是国密sm3,或者通常使用的md5
  2. 参数-e后面指定的是数据加密方式,如果不想加密,可以去掉-e sm4 -c "echo 12345678"部分;
  3. 参数--pwfile指定三圈用户的密码。这里的密码“Hello@123456”不是最终密码,后面我们改有效期的时候会更换掉。

06. SSL 证书

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

hg_sslkeygen.sh /opt/highgo/hgdb-see-4.5.9/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

说明

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

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 /home/highgo/hgdbbak/archive/%f';
alter system set log_line_prefix = '%m [%p] %a %u %d %r %h';
alter system set nls_length_semantics = 'char'; 
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@1234' valid until 'infinity';
\c - sysdba
alter user current_user password 'Hello@1234';
\c - syssao
alter user current_user password 'Hello@1234';
EOF

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

sed -i 's/Hello@123456/Hello@1234/g' /home/highgo/.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. 安装授权

安全版默认是一个月的试用期,若要延长使用,可以联系瀚高商务申请延长授权,联系电话400-708-8006

拿到授权文件后,安装步骤如下:

(1)修改授权文件权限:

chmod 0600 hgdb_0_t.lic 

(2)查看确认授权信息:

hg_lic -c -F hgdb_0_t.lic 

(3)安装授权文件:

hg_lic -l -F hgdb_0_t.lic

结果:

loading succeeded. The new license is an trial version and will expire until 2023-06-30 23:59:59

注意:这种授权安装方式是瀚高数据库安全版v4.5.8开始启用的新方法,后面版本不能使用这种方式。

15. 服务设置

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

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

cat > /usr/lib/systemd/system/hgdb-see-4.5.9.service <<"EOF"
[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/highgo/hgdb-see-4.5.9/data

OOMScoreAdjust=-1000

ExecStart=/opt/highgo/hgdb-see-4.5.9/bin/pg_ctl start -D ${PGDATA}
ExecStop=/opt/highgo/hgdb-see-4.5.9/bin/pg_ctl stop -D ${PGDATA}
ExecReload=/opt/highgo/hgdb-see-4.5.9/bin/pg_ctl reload -D ${PGDATA}
TimeoutSec=60

[Install]
WantedBy=multi-user.target graphical.target
EOF

说明

  1. 如果普通用户不是highgo,注意修改上面单元文件例的UserGroup
  2. 注意环境变量PGDATA的路径以及下面pg_ctl的路径,要使用绝对路径。

重载服务单元:

systemctl enable hgdb-see-4.5.9

启动数据库服务:

systemctl start hgdb-see-4.5.9

16. 开启防火墙端口:

firewall-cmd --add-port=5866/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

<< There you go!

你可能感兴趣的:(linux,postgresql,数据库,瀚高数据库)