PostgreSQL数据库支持Linux和Windows安装,登录Postgres官网下载对应系统安装包进行安装。Linux系统安装的支持二进制和源码编译安装。下面将介绍源码编译安装。
1.下载安装包
下载postgresql的源码包:https://www.postgresql.org/ftp/source/,根据要安装的版本进行下载安装包。

2.系统依赖
安装系统依赖之前,一定记着需要挂载Linux操作系统镜像源,否则导致安装依赖失败。
开发包
yum groupinstall "Development tools" --安装gcc、 make
重要依赖包
yum install -y bison -- 语法分析器
yum install -y flex -- 词法分析器
yum install -y readline-devel -- psql客户端的命令历史
yum install -y zlib-devel -- pg_dump/pg_restore的压缩功能支持
3.编译安装
3.1 添加用户组和用户
登录Linux操作系统,在root用户下执行如下命令,创建用户组和用户。
groupadd -g 300 postgres
useradd -u 300 postgres -g postgres

3.2 创建数据库库文件存储目录,赋予postgres用户权限
在root用户下,创建安装数据库目录,根据当前安装数据库的机器进行创建路径。同时赋予安装目录postgres用户权限
mkdir -p {/data/postgres/pgsql15,/data/postgres/data}
chown -R postgres. {/data/postgres/pgsql15,/data/postgres/data}

3.3 解压文件
进入放置下载安装包的目录,执行如下命令进行解压
cd /data/postgres
tar -xf postgresql-15.0.tar.gz

3.4 编译配置,指定目录
下面编译配置命令的介绍:
• ./configure --help
• 重要选项
#--prefix=PREFIX -- 安装路径
#--with-blocksize=BLOCKSIZE -- 数据库blocksize,缺省8KB
# --with-segsize=SEGSIZE -- 表文件的段尺寸,缺省1GB
#--with-llvm -- 使用基于JIT的llvm编译
在root用户下,解压完成postgres安装包以后,进入解压的目录,进行编译配置指定安装数据库app软件目录。
cd postgresql-15.0
./configure --prefix=/data/postgres/pgsql15

编译配置完成,出现如下提示表示编译配置成功。

在root用户下,编译:
make

在root用户下,编译安装。如果编译是成功且没有报错,编译安装才能保证成功执行。
make install

3.5 初始化数据库目录并启动
在root编译安装完成后,需要修改数据库库文件的路径权限(目录必须是700),才能保证postgres用户正常访问,并成功初始化数据库。
cd /data/postgres
chmod -R 700 {pgsql15,data}

在从root用户下切换用户
su - postgres
A)初始化数据:/data/postgres/pgsql15/bin/initdb -D /data/postgres/data -E utf8 --wal-segsize=8
使用initdb命令初始化数据库簇
# -D: database cluster的主目录
# -E:数据库字符编码
# --wal-segsize: WAL日志文件尺寸
# -U:指定超级用户
# --locale:数据库区域语言

B)启动数据库
启动时,报如下错误表示数据库的端口被占用,需要重新修改端口才能启动。

进入到数据库数据目录,cd /data/postgres/data,修改数据库端口。
sed -i 's/#port =.*/port = 5435/g' postgresql.conf
grep 'port =' postgresql.conf

启动数据库:/data/postgres/pgsql15/bin/pg_ctl -D /data/postgres/data -l logfile start
出现如下图的进程表示,启动成功。

3.6 新增环境变量
切换到数据库用户postgres,在.bashrc文件中添加以下内容后source环境变量 source .bashrc
export PGHOME=/data/postgres/pgsql
export PGDATA=/data/postgres/data
export LD_LIBRARY_PATH=$PGHOME/lib
export PATH=$PGHOME/bin:$PATH

4.管理实例
登录实例:psql -d postgres -p 5435
-p 端口
-d 数据库名

启动数据库:pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]

停止数据库:pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s]
-m:数据库关闭的模式
-smart:等待所有数据库连接断开后再关闭数据库
-fast:回滚所有活动事务,然后强制断开所有会话,最后再正常关闭数据库
-immediate:立即终止所有服务器进程,等于宕机,下次启动会进入恢复状态。不推荐使用

查看数据库状态:pg_ctl status [-D datadir]
5.数据库基本配置
数据库实例基本配置
• postgresql.conf
• 位于$PGDATA数据库簇的目录下
shared_buffers = 512MB #重启数据库生效,一般是主机内存的20%~25%
wal_buffers = 16MB
temp_buffers = 8MB
work_mem = 4MB
maintenance_work_mem = 64MB
• pg_ctl reload和SELECT pg_reload_conf()重新加载动态参数配置
数据库监听配置
• postgresql.conf
数据库监听配置
listen_addresses = '*'
port = 5435
配置完成监听后,需要重启数据库才能生效。
数据库访问认证
• pg_hba.conf
• 格式如下:
[TYPE] [DATABASE] [USER] [ADDRESS] [METHOD]
• pg_ctl reload和SELECT pg_reload_conf()动态重新加载配置

允许的连接方式:
-- local匹配使用Unix套接字的连接
-- host匹配使用TCP/IP的连接,同时支持SSL和非SSL
-- hostssl匹配SSL的TCP/IP连接,要使用该类型必须:
• 客户端和服务器端都安装OpenSSL
• 编译安装PostgreSQL时configure参数with-openssl打开
• postgresql.conf参数ssl=on
-- hostnossl匹配非SSL的TCP/IP连接
认证方式:
PostgreSQL支持十多种认证方法,常见的有trust、 reject、 md5和password等
– trust不需要密码
– reject拒绝登录
– md5使用双重md5加密密码
– password使用明文密码




