PostgreSQL单机部署

目录

一、源码安装

1、软件安装

2、用户与权限配置

3、初始化并启动

二、RPM安装

1、安装RPM包

2、用户与环境配置

3、初始化并启动

三、PG的一些配置文件

pg_hba.conf

postgresql.conf

postgresql.auto.conf


一、源码安装

1、软件安装

复制代码
#下载
wget https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz

#解压
tar zxf postgresql-13.4.tar.gz -C /usr/local

#安装依赖包
yum install gcc gcc-c++ systemtap-sdt-devel perl-ExtUtils-Embed readline readline-devel readline-dev zlib zlib-devel opensll openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel tcl tcl-devel openldap openldap-devel python python-devel

#编译安装
cd /usr/local/postgresql-13.4/

./configure --prefix=/usr/local/postgresql-13.4 --with-perl --with-tcl --with-python --with-openssl --with-pam --without-ldap --with-libxml --with-libxslt --enable-thread-safety  --enable-dtrace --enable-debug

make && make install

./configure编译安装时的一些参数

复制代码
--prefix:指定安装后的软件目录

--with-perl : 编译时添加该参数才能够使用perl语法的PL/Perl过程语言写自定义函数,一般都需要。需要提前安装好相关的perl开发包:libperl-dev

--with-python : 编译时添加该参数才能够使用python语法的PL/Perl过程语言写自定义函数,一般都需要。需要提前安装好相关的python开发包:python-dev

--enable-thread-safety :  保证客户端线程安全,该参数在PG 9.0以上默认线程安全,如果安装的是8.0版本需要手动指定该参数

--with-blocksize=xxx --with-wal-blocksize=xxx : 默认情况下PG数据库的数据页大小为8KB,若数据库用来做数仓业务,可在编译时将数据页进行调整,以提高磁盘IO

2、用户与权限配置

复制代码
【创建用户】
# useradd postgres
# groupadd -g postgres postgres
# passwd postgres 
pg@TP2021

【创建数据目录】
# mkdir /tpsys/pgsql/{data,logs,archive} -pv
# chown -R postgres:postgres /tpsys/pgsql/

【修改环境变量】
# vi /etc/profile
export PGHOME=/usr/local/postgresql-13.4
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/postgresql-13.4/lib
export PGPORT=5432
# source  /etc/profile

# su - postgres
$ vi ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/postgresql-13.4/lib
$ source ~/.bashrc

【配置postgres用户sudo权限】
chmod u+w /etc/sudoers
vi /etc/sudoers
在root    ALL=(ALL)       ALL下新增
postgres        ALL=(ALL)       NOPASSWD:ALL
chmod 440 /etc/sudoers

3、初始化并启动

复制代码
【初始化】
# su - postgres
$ initdb  -D /tpsys/pgsql/data/

【启动】
$ pg_ctl -D /tpsys/pgsql/data/ -l /tpsys/pgsql/data/postgresql.conf start
waiting for server to start.... done
server started

【登陆】
$ psql

二、RPM安装

1、安装RPM包

复制代码
# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum install -y postgresql12-server

# rpm -qa | grep postgres
postgresql12-12.4-1PGDG.rhel7.x86_64
postgresql12-libs-12.4-1PGDG.rhel7.x86_64
postgresql12-server-12.4-1PGDG.rhel7.x86_64

2、用户与环境配置

复制代码
【添加用户】
# groupadd postgres
# useradd -g postgres postgres

【配置数据、日志目录】
# mkdir -p /data/pgsql/{data,logs}
# chown -R postgres:postgres /data/pgsql

【修改环境变量】
# vi /etc/profile
export PGHOME=/usr/local/pgsql
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
export PGPORT=5432
# source  /etc/profile

# su - postgres
$ vi ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
$ source ~/.bashrc

【配置postgres用户sudo权限】
chmod u+w /etc/sudoers
vi /etc/sudoers
在root    ALL=(ALL)       ALL下新增
postgres        ALL=(ALL)       NOPASSWD:ALL
chmod 440 /etc/sudoers

3、初始化并启动

复制代码
【初始化】
# su - postgres
$  /usr/pgsql-12/bin/initdb -D /data/pgsql/data/

【启动】
$ /usr/pgsql-12/bin/postgres -D /data/pgsql/data/ > /data/pgsql/logs/postgres.log

【登陆】
$ psql

三、PG的一些配置文件

pg_hba.conf

用于配置PG的访问策略

复制代码
该配置文件有5列,分别为:
		TYPE(主机类型)、DATABASE(数据库名)、USER(用户名)、ADDRESS(IP地址和掩码)、METHOD(加密方法)

【TYPE,连接方式】
local:使用本地Unix套接字连接
host:使用TCP/IP连接(包括SSL和非SSL)
hostssl:只能是SSL加密的TCP/IP连接
hostnossl:不能使用SSL的TCP/IP连接

【DATABASE,数据库名称】
指定用户所匹配的数据库名称,可以是all, sameuser, samerole, replication,一个数据库名称;
all表明该记录匹配所有数据库,但不包括replication
sameuser表示如果被请求的数据库和请求的用户同名,则匹配。
samerole表示请求的用户必须是一个与数据库同名的角色中的成员。
replication表示如果请求一个复制链接,则匹配。

【USER,用户名】
可以是all匹配所有用户,或者指定特定的用户名,也以"+"为前缀的组名或者以逗号分隔的列表。


【ADDRESS,用IP地址和掩码配置可以访问数据库的地址】
该参数可以为 `主机名称` 或者`IP/32(IPV4) `或 `IP/128(IPV6)`,主机 名称以 `.`开头,`samehost`或`samenet` 匹配任意IP地址
all可以匹配任何ip地址;
samehost,用于匹配任何本服务器自身的IP地址;
samenet,用于匹配本服务器直接连接到的任意子网的任意地址;
可以用IP和掩码指定一个IP范围。


【METHOD,身份认证模式】
该参数可以为trust, reject, md5,password, scram-sha-256,gss, sspi, ident, peer, pam, ldap, radius或cert。
trust:只需要提供用户名,不需密码就可以连接数据库
password和md5:对于外部访问,需要提供用户名和密码。对于本地连接,提供用户名密码之外,还需要有操作系统访问权(用操作系统同名用户验证)。password是明文密码,md5用md5算法加密的密码
ident,该模式下系统会将请求发起者的操作系统用户映射为PostgesSQL数据库内部用户,并以该内部用户的权限登录,且此时无需提供登录密码。操作系统用户与数据库内部用户之间的映射关系会记录在pg_ident.conf文件中。
peer,该模式使用连接发起端的操作系统名进行身份验证。仅限于Linux、BSD、Mac OS X和Solaris,并且仅可用于本地服务器发起的连接。
reject,该模式表示拒绝所有请求。
gss,用 GSSAPI 认证用户
sspi,用 SSPI 来认证用户
ldap,使用LDAP服务器认证
radius,用 RADIUS 服务器认证
cert,使用 SSL 客户端证书认证
pam,使用操作系统提供的可插入认证模块服务(PAM)认证

postgresql.conf

PG相关参数的配置文件

postgresql.auto.conf

登陆PG,用命令修改参数后,修改后的参数会保存在postgresql.auto.conf中,PG重启时,postgresql.auto.conf配置文件中的参数的优先级高于postgresql.conf。

修改上述配置文件需执行pg_ctl reload重新载入配置文件才能生效

相关推荐
这个DBA有点耶2 小时前
NULL不是空——数据库里最反直觉的设计,90%新人踩过的坑
数据库·mysql·代码规范
这个DBA有点耶4 小时前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
镜舟科技5 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
Databend6 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
ClouGence9 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
先吃饱再说1 天前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils1 天前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend1 天前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶1 天前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
smallyoung1 天前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql