Centos7 源码安装 PostgreSQL

下载源码

从官网下载PostgreSQL源代码 https://www.postgresql.org/download/,选择source选项,下载对应版本的源码压缩包即可,根据自己的喜爱,可以选择下载tar.gz格式压缩包,我们这边下载的是: postgresql-14.4.tar.gz

环境准备

安装依赖

yum install -y gcc readline-devel zlib-devel

用户配置

groupadd postgres #新增用户组
useradd -g postgres postgres #新增用户
passwd postgres #为用户设置密码

编译安装

tar zxvf postgresql-14.4.tar.gz 
cd postgresql-14.4
./configure
make
make intsall
chown -R postgres:postgres /usr/local/pgsql

设置用户环境变量

为之前新建的用户添加环境变量,这样该用户就能够直接执行命令去操作pg,而不是使用绝对路径去操作命令

vim ~/.bash_profile

为.bash_profile文件后面加入以下内容:

#表示pg安装的目录
PGHOME=/usr/local/pgsql
export PGHOME
#pg数据目录,在初始化数据库时如果没有指定目录,则选择环境变量中的目录
PGDATA=/usr/local/pgsql/data
export PGDATA

PATH=$PATH:$HOME/bin:$PGHOME/bin
export PATH

初始化数据库

由于配置了环境变量,所以此处我们直接执行initdb即可完成pg初始化,我们可以在数据库初始化的时候指定数据目录、编码和日志等信息,具体操作如下:

su - postgres
#初始化时指定了数据库的编码和数据目录
initdb -E utf8 -D /usr/local/pgsql/data

启动和连接

在初始化数据库之后我们要考虑启动数据库,pg则是使用pg_ctl命令来控制数据库的启动和关闭。

pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log/pg_server.log start  #启动服务,指定日志目录与数据目录
pg_ctl stop #停止服务
pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log/pg_server.log restart #重启服务

在启动数据库成功后,就可以使用psql命令进行连接操作数据库,如下:

psql

开启远程访问

数据库默认配置是不开启远程访问,即只能在服务器本机进行访问操作,显然这样不满足我们数据库对外提供服务的期望,因此需要修改配置文件来开启远程访问功能,修改/usr/local/pgsql/data/postgresql.conf文件,取消listen_addresses的注释, 将参数值改为"*"

vim /usr/local/pgsql/data/postgresql.conf

修改配置项:listen_addresses='*',同时设置port=5432,如下所示:

Centos7 源码安装 PostgreSQL

修改/usr/local/pgsql/data/pg_hba.conf文件,增加下图红框部分内容

Centos7 源码安装 PostgreSQL

修改完以上两个配置文件后,重启postgresql即可

安装相关插件

PostgreSQL在安装的时候,默认只安装了plpgsql插件,而一些其它的应用在连接数据库的使用过程中,需要使用到其它的插件,则可以通过postgresql源码进行编译安装,所有支持的插件都在源码的contrib目录下,步骤如下所示:

cd postgresql-14.4/contrib

例如现在要安装btree_gist的插件,步骤如下所示:

cd postgresql-14.4/contrib/btree_gist
make & make install
cd postgresql-14.4/contrib/pg_trgm
make & make install 

安装成功后,即可在/usr/local/pgsql/share/extension目录下看相关的插件已经启用,也可以通过sql语句查询现已启用了哪些插件:

select * from pg_available_extensions;

新增用户

CREATE USER gitlabdata WITH PASSWORD '123456';
ALTER ROLE gitlabdata NOSUPERUSER CREATEDB CREATEROLE INHERIT LOGIN REPLICATION BYPASSRLS;
grant all privileges on database gitlab to gitlabdata;
grant all privileges on all tables in schema public to gitlabdata;

原创文章,作者:jiafegn,如若转载,请注明出处:https://www.techlearn.cn/archives/2154

Previous 2024年1月25日
Next 2024年8月28日

相关推荐