1 PostgreSQL概述
1.1 简介
- PG数据库是一个先进的对象-关系数据库管理系统(ORDBMS),它不仅支持关系数据库的各种功能,而且还具备了类,继承等对象数据库的特征。
- PG数据库是目前功能最强大,特征最丰富和结构最复杂的开源数据库管理系统
1.2 特性
PostgreSQL是一种几乎可以运行在各种平台上的免费的开放源码的对象关系数据库管理系统,拥有与企业级数据库相媲美的特性,如完善的SQL标准支持、多版本并发控制、时间点恢复、表空间机制、异步复制、嵌套事务、在线/热备份、一个复杂的查询优化器、预写日志容错技术。它支持国际字符集、多字节字符编码、Unicode,并且对格式化、排序、大小写敏感提供本地化支持。PostgreSQL在管理大数据量方面有良好的可扩展性,对并发用户管理具有自适应性。现在已经出现具有管理超过4万亿字节数据能力的实用版本产品。
-
开放特性:PostgreSQL内置了丰富的数据类型,如任意精度的数值、无限制长度的文本、几何图元、IP地址、数组等;同时还允许用户定义基于正规SQL类型的新类型,让数据库自身理解复杂数据,自定义类型中还可以包含继承关系。用户可以为数据库内几乎所有的对象定义新的类型,如索引、操作符(可重载现有操作符)、聚集函数、数据域、数据类型转换、会话(编码转换)等。
-
可编程性:PostgreSQL同样拥有大量的编程接口供用户开发使用,如ODBC、JDBC(Java)、Libpq(C/C++)等。
-
可定制性:PostgreSQL拥有广泛的编程语言支持来实现函数功能,包括内置的PL/pgSQL过程语言,PL/Perl、plPHP、PL/Python、PL/Ruby、PL/Tcl等脚本语言,以及Java、C/C++等高级编程语言。函数的输出是一系列行类型的集合,可以在查询中当做表来使用,函数也可以被定义成以创建者或者调用者的身份运行。在其他的数据库产品中,函数也会被称为“存储过程”。
-
索引手段:用户可以自定义索引方法或者使用内置B-Tree索引、Hash表索引、GiST索引、GIN索引。GiST索引不是某种特定的索引类型,而是一种通用索引基础结构,可以在这种结构上实现很多不同的索引策略。PostgreSQL同时还支持如下功能:反向索引检索、表达式索引、部分索引、位图索引扫描。
-
多种身份认证方式:PostgreSQL中可以使用数据库用户/角色、操作系统、PAM、Kerberos等方式,根据主机配置文件(pg_hba.conf)中的设置执行对应的身份认证。
2 PostgreSQL下载并安装
2.1 安装环境
- CentOS-7.9
- PostgreSQL-15.3
2.2 下载安装包
- 下载地址:https://www.postgresql.org/ftp/source/
- 选择版本进行下载:
- 下载文件上传到CentOS上,例如 opt/pgsql目录下:
- 解压安装包: tar -xf postgresql-15.3.tar.bz2
如果出现以下错误提示:执行yum install -y bzip2 语句就好了。
2.3 安装依赖包
在要安装postgresql数据库的Linux服务器上执行以下命令安装所需要的依赖包:
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
2.3 安装pgsql
- 进入解压目录
- 编译源码:./configure --prefix=/pgsql/postgresql
- –prefix=prefix 安装到prefix指向的目录;默认为/usr/local/pgsql
- –bindir=dir 安装应用程序到dir;默认为prefix/bin
- –with-docdir=dir 安装文档到dir;默认为prefix/doc
- –with-pgport=port 设置默认的服务器端网络连接服务TCP端口号
- –with-tcl 为服务端提供Tcl存储过程支持
- –with-perl 为服务端提供Perl存储过程支持
- –with-python 为服务端提供Python存储过程支持
- 安装源码:make & make install
- 至此,已完成postgreql的安装。进入/pgsql/postgresql目录可以看到安装后的postgresql的文件。
2.4 创建用户组和用户
- 创建用户组postgres:groupadd postgres
- 创建用户postgres并设置用户组为postgres: useradd -g postgres postgres
- 查看用户信息:id postgres
2.5 创建数据主目录并修改文件所有者
这个数据库主目录是随实际情况而不同,这里我们的主目录是在/pgsql/postgresql/data目录下:
2.6 配置环境变量
- 进入home/postgres目录可以看到.bash_profile文件。
- 编辑修改.bash_profile文件,添加以下内容。
export PGHOME=/pgsql/postgresql
export PGDATA=/pgsql/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin
- 保存,退出vim。执行以下命令,使环境变量生效 :source .bash_profile
2.7 切换用户并使用initdb初使用化数据库
- 切换用户postgres
- 并执行initdb 命令
- 可以看到 /pgsql/postgresql/data已经有文件了。
2.8 配置服务
- 修改/pgsql/postgresql/data目录下的两个文件。
- postgresql.conf 配置PostgreSQL数据库服务器的相应的参数。
其中,参数“listen_addresses”表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。
- pg_hba.conf 配置对数据库的访问权限。找到最下面这一行 ,这样局域网的人才能访问。红色下划线为新添加内容。
2.9 设置PostgreSQL开机自启动
PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下。linux文件即为linux系统上的启动脚本
- 切换为root用户,修改linux文件属性,添加X属性
- 复制linux文件到/etc/init.d目录下,更名为postgresql
- 修改/etc/init.d/postgresql文件的两个变量
prefix设置为postgresql的安装路径:/pgsql/postgresql
PGDATA设置为postgresql的数据目录路径:/pgsql/postgresql/data
- 设置postgresql服务开机自启动
- firewall-cmd服务开放5432端口
查看端口是否成功开放 /sbin/iptables -L -n
- 执行systemctl start postgresql,启动PostgreSQL服务,
查看已启动进程信息:
2.10 测试
- 进入postgres用户
- psql -d postgres -p 5432 进入数据库的postgres用户的postgres数据库
- 显示数据库
2.11 远程连接