作者:李明
毫无疑问,在使用PostgreSQL之前,首先要安装它。
本文介绍以源码方式在RHEL7.3下的PostgreSQL13.4安装。
./configuremakemake installadduser postgresmkdir /usr/local/pgsql/datachown postgres /usr/local/pgsql/datasu - postgres/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start/usr/local/pgsql/bin/createdb test/usr/local/pgsql/bin/pgsql test
要求
一般的Linux操作系统环境,足以运行PostgreSQL。
安装PostgreSQL,需要以下软件包:
以下为可选安装包。默认安装PostgreSQL用不到这些包,但是在需要特定功能的时候,就需要安装这些软件包:
磁盘空间需求:当前环境,普普通通足以满足空间需求。
获取源码
从官网获取:
https://www.postgresql.org/ftp/source/v13.4/
有两个类型的文件:postgresql-13.4.tar.bz2和postgresql-13.4.tar.gz
解压文件:
tar -xvf postgresql-13.4.tar.gz或者tar -jxvf postgresql-13.4.tar.bz2
解压完成后,生成:
postgresql-13.4 #源码路径
安装
依赖包安装
配置yum源,然后安装相关依赖包:
yum install -y gcc *xml2* *readline*dev* *zlib* *perl*dev* *python*dev* bison flexs
configuration配置
如果只进行默认配置,可直接在源码解压路径下(postgresql-13.4)运行命令:./configure
默认配置会安装仅使用C编译器的服务端和其他程序、客户端接口等。
默认会安装到/usr/local/pgsql路径下。#数据库软件安装路径
如果需要重新进行configure,则建议首先执行以下: make distclean #该命令重置源码树至初始状态
常用./configure选项:
--prefix=PREFIX
将所有文件放置到PREFIX指定的路径下(而非默认的/usr/local/pgsql)。
--enable-nls[=LANGUAGES]
启用本地语言支持(NLS)。若不指定LANGUAGE,则会安装所有可用的语言。
需要Gettext API。
--with-perl
创建PL/Perl服务端语言。
--with-python
创建PL/Python服务端语言。
--with-openssl
支持SSL(加密)连接。需要安装OpenSSL。
--with-pgport=NUMBER
为客户端及服务端设置默认端口号。默认为5432。
也可以在此阶段设置块大小、WAL块大小及段大小。
build构建
开始build
make
如果想同时安装文档以及其他的模块,则使用make world
安装PostgreSQL
make install
将相关数据库文件安装到./configure中指定的路径下,默认为/usr/local/pgsql。
该安装会同时安装客户端和服务端相关程序。
如果想同时安装文档以及其他的模块,则使用make install-world
仅安装客户端程序及接口库
make -C src/bin install
make -C src/include install
make -C src/interfaces install
make -C doc install
卸载PostgreSQL
make uninstall
如果需要重新进行configure,则建议首先执行以下: make distclean #该命令重置源码树至初始状态
数据库服务配置
创建数据库的操作系统用户
useradd postgres --用户名可自定义
passwd postgres
创建数据库群集
创建自定义数据库路径:
mkdir /postgres
chown postgres /postgres
切换到postgres用户下,创建数据目录:
su - postgres
mkdir /postgres/data
初始化数据库:
/usr/local/pgsql/bin/initdb -D /postgres/data #可以设置PGDATA环境变量,替代-D选项或pg_ctl -D /postgres/data initdb
此命令默认创建一个没有密码的数据库超级用户postgres(与执行该命令的操作系统用户名相同)。若需为该默认数据库超级用户指定密码,则可在initdb时指定W选项。
启动数据库:
/usr/local/pgsql/bin/postgres -D /postgres/data >logfile 2>&1 &或
/usr/local/pgsql/bin/pg_ctl start -D /postgres/data -l logfile
安装完成后的配置
环境变量配置
在数据库安装用户postgres下,配置数据目录(-D选项)以及可执行文件路径、共享库路径:vi ~/.bash_profile
添加:
export PGDATA=/postgres/data
export PATH=/usr/local/pgsql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
使配置生效:source ~/.bash_profile
数据库服务开机自启动配置
vi /etc/rc.d/rc.local添加:su - postgres -c 'pg_ctl start -D /postgres/data -l logfile'为该文件添加执行权限chmod +x /etc/rc.d/rc.local
客户端连接配置
数据库服务启动后,默认异机客户端无法连接,需对配置文件postgresql.conf和pg_hba.conf文件进行配置:vi $PGDATA/postgresql.conf
将其中的参数:#listen_addresses = 'localhost' 改为 listen_addresses = '*' #需重启数据库服务
vi $PGDATA/pg_hba.conf将其中的IP限制修改为host all all 0.0.0.0/0 trust #需执行pg_ctl reload
#可以指定某一IP或某一网段IP;认证方式可以为trust、reject、md5、password、scram-sha-256、gss、sspi、dent'、peer、pam、ldap、radius、cert
关闭数据库服务
关闭数据库服务有三种模式:
可使用命令pg_ctl stop -m smart|fast|immediate关闭数据库服务。