目录
一、源码安装
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重新载入配置文件才能生效