PostgreSQL编译安装教程

本文详细介绍了在CentOS7.6系统环境下安装PostgreSQL16.0的步骤,包括下载、解压、编译、安装、用户权限设置、数据库初始化、环境变量配置以及PostgreSQL的启动、停止、客户端连接和密码设置。最后还演示了如何通过DBeaver进行连接测试。
摘要由CSDN通过智能技术生成

目录

系统环境

下载压缩包

下载压缩包

解压压缩包

查看解压文件

编译安装

编译

安装

用户权限和环境变量设置

创建用户

创建数据目录和日志目录

设置权限

设置环境变量

初始化数据库

数据库访问控制配置文件

postgresql.conf

pg_hba.conf

PostgreSQL启动与关闭

手动

自动

客户端测试连接

设置用户postgres密码

DBeaver连接测试


系统环境

1.操作系统:CentOS 7.6.1810

2.PostgreSQL版本: 16.0

下载压缩包

官网地址:PostgreSQL: File Browser

下载压缩包

wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz

解压压缩包

tar -xzvf  postgresql-16.0.tar.gz

查看解压文件

解压之后会看到下面的文件

编译安装

编译

进入postgresql-16.0目录,编译configure文件

./configure --prefix=/usr/local/pgsql

参数:--prefix=/usr/local/pgsql
表示编译好的文件放到目录"/usr/local/pgsql"里,这个目录不用用户自己创建,编译过程会自动创建。

注意事项:

PostgreSQL编译过程会用到一些依赖的库,如果你的操作系统比较旧,编译过程可能会出现错误,告诉你要安装缺少的依赖库。

看到./config.status说明编译完成,可以看见config.status文件

安装

make && make install 

完成以后,在"--prefix=/usr/local/pgsql"参数对应的"/usr/local/pgsql"的目录就是我们所有PostgreSQL存放的文件,这里的这个data和log文件现在是没有的。

用户权限和环境变量设置

编译安装成功后,接下来要做的就是创建一个普通用户,因为默认Linux超级用户(root)不能启动PostgreSQL,所以需要创建一个普通用户来操作数据库。

创建用户

#创建用户组postgres
groupadd postgres
#创建用户postgres并设置groups、gid和家目录
useradd -g postgres -G postgres -d /home/postgresql postgres 
#设置用户密码
passwd postgres

创建数据目录和日志目录

注意当前路径是在/usr/local/pgsql下

mkdir data log

设置权限

接下来需要设置权限,将/usr/local/pgsql (我们安装PostgreSQL数据库的目录) 目录全部赋权给postgres用户

chown -R postgres.postgres /usr/local/pgsql/

设置环境变量

为了方便起见设置一下相关的环境变量,此处是要设置postgres用户的环境变量,所以首先要把Linux的登陆用户由root切换到以postgres用户登陆。

su - postgres

因为我们创建Linux用户"postgres"是指定了用户的目为"/home/postgresql",所以登陆后显示的目录是:/home/postgresql

要创建环境变量,实际上就是对文件.bash_profile的修改,所以我们首先要找到这个文件,这个文件就在"/home/postgresql"里,由于这个文件是隐藏文件所以要加-a参数

ll -a 

编辑.bash_profile文件

vim .bash_profile

添加下面的内容

使配置的环境变量生效

source /home/postgresql/.bash_profile

检查是否生效

psql -V

看到安装PostgreSQL的版本号则代表生效

初始化数据库

新安装的PostgreSQL数据库系统,要先初始化基本的基础数据库,然后我们才能在上面创建我们自己的数据库。初始化数据库的指令是"initdb",这个指令位于"/usr/local/pgsql/bin/"

我们可以用指令"initdb --help"看看这个文件的帮助信息。

如上图,可以看到在使用"initdb"进行初始化的时,可以指定参数进行一些初始化工作,例如指定pgdata(postgresql数据库目录)、指定encoding(编码)、指定数据库超级用户的用户名和密码等等。注意,如果pgdata目录没有指定,则会默认使用环境变量中的PGDATA指定的目录作为数据库存放的目录,由于之前我们刚刚设置了"PGDATA=/usr/local/pgsql/data"环境变量,所以此处我们也就无需再额外指定,直接执行初始化命令即可。

initdb

若是执行initdb看到下面报错,说明现在登陆的不是postgres用户,需要切换到postgres用户来执行initdb命令

看到下面信息就代表成功

同时在"/usr/local/pgsql/data]"的目录可以看到生成的数据和配置文件等。

  1. base目录是表空间目录
  2. global目录是相关全局变量的目录
  3. pg_hba.conf是访问控制配置,127.0.0.1改为信任的客户端ip网段使其可以远程访问
  4. postgresql.conf是PostgreSQL主配置文件,"listen_address=localhost"改为"*"使其监听整个网络,方便起见我这里将pg_hba.conf的ip地址修改为0.0.0.0/0,而加密方式改为md5,就表示需要密码访问,算是提供一个最低级的安全防护

数据库访问控制配置文件

主要是配置postgresql.conf 和 pg_hba.conf 个。

  1. postgresql.conf 针对实例的配置
  2. pg_hba.conf 针对数据库访问的控制

postgresql.conf

vim postgresql.conf 

找到"#port"和"#listener_address"这两个参数,这两个参数是相邻的,将两行行首的"#"删除。
将"listen_addressee='localhost'"改为当前服务器的IP,如果改为

"listen_addressee='*'",将监听整个网络。
默认的监听端口是5432,可以自行指定另外一个端口号。
max_connections是客户端最大的连接数, 缺省值100有点少,特别是业务系统,可以调整成1000或者更高。

pg_hba.conf

vim pg_hba.conf

将红框设置为 10.10.100.0/24,意思是10.10.100网段的IP 连接此服务器上的PostgreSQL. 如果想允许所有IP都可以连接此服务器,则可以配置成0.0.0.0/0,但这样是不安全的,可以把trust改为md5,表示需要密码访问,算是提供一个最低级的安全防护。

PostgreSQL启动与关闭

手动

启动与关闭数据库是执行pg_ctl命令,在执行时,需要指定数据库路径和日志文件路径,格式如下。

pg_ctl -D <数据存放路径> -l <日志文件路径> [ stop | start ]

如果已经指定了环境变量PGDATA,"数据存放路径"参数可以省略。

pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pg_server.log start

自动

此步骤需要root用户操作,如果你是用PostgreSQL的用户postgres登陆的话,要用exit指令退出,回到root登陆才能操作。
PostgreSQL解压后的安装包目录中提供了数据库启动与关闭的脚本,此脚本不但可以帮助我们简化操作,而且可以用作开机启动的脚本和service/systemctl 控制服务的脚本。目录里"linux"文件就是我们要找的文件。

如果找不到linux文件可以执行下面命令查看

find / -name macos

把文件"linux"拷贝到目录"etc/init.d/"下,并改名为postgresql。
把脚本文件"postgresql"加入到开机启动的程序列表。
赋予"postgresql"文件有执行的权限。

cp /opt/postgresql/postgresql-16.0/contrib/start-scripts/linux /etc/init.d/postgresql
chkconfig --add postgresql或者systemctl enable postgresql
chmod 755 /etc/init.d/postgresql

主要设置文件"postgresql"的四个变量的值。

vim /etc/init.d/postgresql

prefix 是软件的安装路径
PGDATA 是数据存放路径
PGUSER 是启动PostgreSQL服务器的用户
PGLOG 是日志文件

以后可以开机启动和通过service命令控制启动和关闭了。

service postgresql start/stop

客户端测试连接

可以通过PostgreSQL自带的客户端工具程序psql来进行连接,这个psql指令文件位于/usr/local/pgsql/bin目录下,因为我们做了变量环境设置,所以可以在任何目录下直接输入psql连接PostgreSQL服务器。温馨提示:用客户端程序psql连接数据库前,要把当前Linux登陆用户从root切换到postgres用户,这个是我们创建的PostgreSQL的超级用户。

su - postgres
psql

可以看到,已经连接上了数据库服务器。

设置用户postgres密码

postgres=# \password

命令"\l"是显示数据库。更多的SQL操作命令可以参考PostgreSQL的官方文档。退出pgsql客户端命令是"\q"或者exit

DBeaver连接测试

测试连接成功

PostgreSQL安装到此完毕。

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值