> 技术文档 > openGauss数据库在CentOS 7 中的单机部署与配置

openGauss数据库在CentOS 7 中的单机部署与配置


部署

版本选择

通过openGuass官网下载地址 ,我们可以看到它支持x86_64Aarch64两种平台,又分成openEuler 22、openEuler 20、Centos 7以及Docker 版本。

进入CentOS 7标签,看到又分成企业版、轻量版、极简版与分布式镜像版。

本文只讨论CentOS 7系统,所以下载的是x86_64平台的CentOS 7 的轻量版中的6.0.1版本。(轻量版相比企业版,少了集群管理工具。)

上传到主机

openGauss安装与运行的用户不能是root。

所以我们新建一个用户user1,然后把openGauss-Server-6.0.1-CentOS7-x86_64.tar.bz2上传到CenOS 7的主机上,解压到user1的$HOME目录中。

之后我们以user1用户登录,就会发现当前目录(即$HOME)下是从openGauss安装包解压出来的全部文件。

目录列表如下:

[user1@localhost ~]$ ls bin data etc include jre lib logs share simpleInstall version.cfg

我们进入simpleInstall:

[user1@loaclhost ~]$ cd simpleInstall

会看到一个install.sh,还有一个README.md

通过阅读README.md文件,安装openGauss的过程非常简单,只需要执行sh install.sh -w password(password是初始化数据库的密码,需要满足复杂度要求)即可。

但是,我们直接执行,却会报一个SEMMNI的错误:

[step 1]: check parameter [step 2]: check install env and os setting On systemwide basis, the maximum number of SEMMNI is not correct. the current SEMMNI value is: 128. Please check it. The required value should be greater than 321. You can modify it in file \'/etc/sysctl.conf\'.

通过查询官方文档,我们发现是需要设置kernel.sem

比如可以执行:

[root@loachost ~]# sysctl -w kernel.sem=250 85000 250 330

或者现在/etc/sysctl.conf里加入一行:

kernel.sem=250 85000 250 330

之后执行sysctl -p

设置好kernel.sem之后执行sh install.sh -w password就一路顺风了。

运行

因为我们是安装的单机版,所以install.sh执行之后,会把数据库的数据目录设置为$HOME/data/single_node

所以,我们后续的很多命令,只要需要指定数据目录的地方,都需要使用-D $HOME/data/single_node

其中,install.sh脚本还做了一件事,就是在当前用户的.bashrc文件里,加入了openGauss相关的环境变量,即:

export GAUSSHOME=/home/user1 export PATH=$GAUSSHOME/bin:$PATH export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH export GS_CLUSTER_NAME=dbCluster ulimit -n 1000000

之后就可以通过$GAUSSHOME来表示数据库安装路径了。

gs_ctl

控制启停的命令是gs_ctl,执行的时候加上数据目录。

如:

[user1@localhost ~]$ gs_ctl stop -D data/single_node [2025-07-18 06:52:22.364][5624][][gs_ctl]: gs_ctl stopped ,datadir is /home/user1/data/single_node waiting for server to shut down.... done server stopped

或者:

[user1@localhost ~]$ gs_ctl start -D data/single_node [2025-07-18 06:52:28.781][5634][][gs_ctl]: gs_ctl started,datadir is /home/user1/data/single_node [2025-07-18 06:52:28.815][5634][][gs_ctl]: waiting for server to start...

配置

默认地,openGauss只监听本地端口,我们可以改变这个配置。

数据库路径下的postgresql.conf,其中有监听地址与端口的配置。

# - Connection Settings -#listen_addresses = \'localhost\' # what IP address(es) to listen on;  # comma-separated list of addresses;  # defaults to \'localhost\'; use \'*\' for all  # (change requires restart)#local_bind_address = \'0.0.0.0\'#port = 5432 

其中,

  • listen_address 监听地址
  • port 端口

改好以后重启,openGauss就监听在我们指定的IP和端口上了。

但是这时候,如果我们在远程连接这个数据库,还会出错:

gsql: FATAL: no pg_hba.conf entry for ...

只是需要我们在数据目录下面的pg_hba.conf中,把我们的客户端主机、用户名以及认证方法加进去。

首先,本地登录psql,在数据库中创建用户:

=# create user dbuser1 password \'dbpass@123\'; CREATE ROLE

然后,我们在pg_hba.conf中, 加入一行:

host all dbuser1 192.168.56.0/24 sha256

就可以在远程客户机上使用dbuser1用户登录了,命令为:

gsql school -h 192.168.56.1 -U dbuser1Password for user dbuser1: gsql ((openGauss 6.0.1 build 84c20a90) compiled at 2025-01-17 17:29:32 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type \"help\" for help. school=>