简介
PostgreSQL 是目前最深受开发人员喜爱的关系型数据库(RDB)之一,其提供了多种扩展数据类型支持,为互联网时代的高效应用开发提供便利。
齐治产品的关系型数据库选用 PostgreSQL,本文将介绍如何在开发用 Linux 环境(CentOS 7)下安装和使用 PostgreSQL。
安装 PostgreSQL
以 root 用户身份执行以下命令即可执行安装操作:
[root@localhost ~]# yum install -y postgresql96-server
......
关于 PostgreSQL 的版本
CentOS 7 自带 PostgreSQL 9.2 版本,可以使用“yum install postgresql-server”安装此版本。如果希望使用最新发布的版本(如本文要求的),则应该使用上面的命令(包名为 postgresqlXX-server,XX为版本号,例如“96”代表 9.6.x 版本)。
使用“yum list | grep postgresql”可以查看当前可以安装哪些和 PostgreSQL 相关的包,注意第一列为包名,第二列为版本,第三列为来源(base/updates 均为 CentOS 自带的安装源,pgdgXX 为 PostgreSQL 组织发布的最新版本安装源)。
安装完成后,执行如下指令:
[root@localhost ~]# usr/pgsql-9.6/bin/postgresql96-setup initdb
Initializing database ... OK
[root@localhost ~]# systemctl enable postgresql-9.6.service
Created symlink from etc/systemd/system/multi-user.target.wants/postgresql-9.6.service to usr/lib/systemd/system/postgresql-9.6.service.
[root@localhost ~]# systemctl start postgresql-9.6.service
第一条指令初始化数据库,后面两条指令分别将 PostgreSQL 以服务方式启用,并启动服务。
PostgreSQL 的安装路径(家目录)为:/var/lib/pgsql/,使用“su - postgres”切换到 postgre 用户并进入其家目录。在家目录下,有版本号为名称的子目录(如“9.6/”),数据/配置文件存放在“版本号/data”子目录下。例如,当安装 PostgreSQL 9.6 时,数据/配置文件存放在“/var/lib/pgsql/9.6/data/”路径下。
创建用户和数据库
PostgreSQL 安装完成后,自动创建名称为 postgres 的 Linux 用户,可使用该用户PostgreSQL 数据库进行管理操作。
执行如下指令,切换到 postgres 用户,并执行用户和数据库的创建操作:
[root@localhost ~]# su - postgres
Last login: Thu Oct 20 21:58:51 CST 2016 on pts/0
-bash-4.2$ createuser -P yey
Enter password for new role:
Enter it again:
-bash-4.2$ createdb -O yey test
-bash-4.2$ psql
psql (9.9.1)
Type "help" for help.
test=# \q
-bash-4.2$
上面的指令中,先使用 su - 切换到 postgres 用户,使用 postgres 用户的环境变量并进入其家目录(/var/lib/pgsql/)。
createuser 指令将创建 PostgreSQL 数据库用户“yey”,-P 参数要求设置该用户的密码,后面两行输入密码和确认密码。
createdb 指令创建名称为“test”的数据库,后续数据将保存到此数据库下。-O 参数指定该数据库的拥有者(Owner)为“yey”用户。
最后,psql 指令可登录进入数据库,由于没有指定任何参数,因此使用缺省用户(postgres)登录进入缺省数据库(postgres),其认证方式为使用操作系统当前用户进行认证,由于当前操作系统用户已经为“postgres”,因此无需输入任何密码,直接可以登录进入。“\q” 指令退出登录,退回到 Bash 提示符状态。
我们新创建用户 yey使用的认证方式为密码认证,当前配置下无法使用 psql 命令登录,接下来我们对数据库进行必要的配置,使可以使用 shterm 用户从本地或远程登录数据库。
如果需要修改数据库用户的密码,可以执行
|
配置 PostgreSQL
数据库的配置文件存放在数据文件路径(/var/lib/pgsql/9.6/data/)目录下,使用“su - postgres”切换用户后,可以编辑以下配置文件:
postgresql.conf:PostgreSQL 的通用配置文件。
pg_hba.conf:配置客户端连接数据库时的认证方式。
在本节中,我们将做如下简单修改,使用户可以从数据库本机或远程,以新创建的 yey数据库用户登录到 test数据库中。
打开 postgresql.conf 文件,修改 listen_addresses 参数,使其监听所有本机地址,而不仅仅是“localhost”:
postgresql.conf
|
上述配置确保从其他计算机也可以连接到数据库。
打开 pg_hba.conf,到最后几行,增加如下一行配置:
pg_hba.conf

新增 82 行配置,确保从研发网段 10.10.0.0/20 可以使用所有用户以密码认证方式(password 或 md5,前者传递密码明文,后者传递 MD5 摘要,更安全)登录进入所有(all)数据库。同时修改第 81 行和第 84 行,将本地连接的认证方式由 ident 改为 md5,确保本地使用 JDBC 可以通过 localhost 主机连接到数据库。
上面的配置完成后,切换到 root 用户(可以执行 exit 退出 postgres 用户),然后执行如下指令,重启 PostgreSQL 数据库:
[root@localhost ~]# systemctl restart postgresql-9.6.service
[root@localhost ~]# firewall-cmd --add-service=postgresql
success
[root@localhost ~]# firewall-cmd --add-service=postgresql --permanent
success
第一条指令重启 PostgreSQL 数据库服务,后面两条指令将 PostgreSQL 使用的端口(5432)加入防火墙规则,确保外部应用能够正常连接。
对 Linux 服务和防火墙的相关配置,可参考:CentOS 7 中的服务 - systemd 和 CentOS 7 中的动态防火墙 - firewalld 两篇文档的说明。
完成后,再次使用 psql 命令即可登录到数据库(无论使用 Linux 的 root 用户或 postgres 用户均可):
[root@localhost ~]# psql -U shterm -h 10.10.2.11 -d shterm -W
Password for user shterm:
psql (9.6.1)
Type "help" for help.




