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

相关推荐
engchina2 小时前
自然语言转 SQL 并不是“魔法”
数据库·人工智能·sql·text2sql·nl2sql·自然语言转sql
小陈phd3 小时前
langGraph从入门到精通(六)——基于 LangGraph 实现结构化输出与智能 Router 路由代理
android·网络·数据库
安当加密3 小时前
电力系统如何防“明文传输”?某电网公司用SM2+UKey构建“端到端加密”实战
服务器·数据库·安全·阿里云
BD_Marathon3 小时前
动态SQL(六)foreach标签2
数据库·sql
小豪GO!3 小时前
数据库-八股
数据库
IT大白3 小时前
1、一条SQL是如何执行的
数据库·sql
变身缎带3 小时前
Unity里基于Luban的buff系统
数据库·unity·游戏引擎
北京地铁1号线3 小时前
2.2 向量数据库
数据库·elasticsearch·milvus·faiss·向量数据库·hnsw
Mr.徐大人ゞ3 小时前
2.pg工具介绍
postgresql