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

相关推荐
科技小花1 分钟前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸3 分钟前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain5 分钟前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希41 分钟前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神1 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员1 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java1 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿1 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴1 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU1 小时前
三大范式和E-R图
数据库