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重新载入配置文件才能生效

相关推荐
陌上丨8 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_56788 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw8 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH30738 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道8 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
麦聪聊数据10 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
未来之窗软件服务10 小时前
数据库优化提速(四)新加坡房产系统开发数据库表结构—仙盟创梦IDE
数据库·数据库优化·计算机软考
Goat恶霸詹姆斯11 小时前
mysql常用语句
数据库·mysql·oracle
大模型玩家七七11 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
曾经的三心草11 小时前
redis-9-哨兵
数据库·redis·bootstrap