PostgreSQL 9.4在RHEL上的安装

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 这次在测试中需要使用PostgreSQL来验证某一具体功能是否正确,需要使用较为新一点的版本,因此就借此机会: - 安装和配置PostgreSQL; - 学习一些*基本*的用法。

这次在测试中需要使用PostgreSQL来验证某一具体功能是否正确,需要使用较为新一点的版本,因此就借此机会:

  • 安装和配置PostgreSQL;
  • 学习一些基本的用法。

安装PostgreSQL

先是凭着直觉去了PostgreSQL的官网 翻了翻文档,下载了两个比较常用版本的Manual,然后刚要着手安装,却发现需要使用源码编译的方式!

使用源码在RHEL安装PostgreSQL

我其实并不排斥使用源码编译并安装应用,只是觉得这个方式比较慢,且容易出错(对我而言),如果有更好的alternative approach,我当然不会使用源码来安装它。

这里不介绍太多,如果需要的话,大家可以自行下载PostgreSQL Manual文档,里面大概第15章有较为详细的介绍,不再赘述了。

使用rpm packages安装PostgreSQL

尽管PostgreSQL官网没有明显的链接,随便一个搜索引擎就能很容易搜索到这样一个网站PostgreSQL RPM很明显,这个是PostgreSQL官网下的一个二级网站,费解的是不知道为什么没有放到明显的位置,不知道是否源码编译方式是否能够更有效地利用系统资源(猜测)。

下面介绍如何使用rpm packages在RHEL5上安装PostgreSQL。按照推荐,安装过程其实非常简单:

推荐的安装方式

-1,使用wget获取到包含PostgreSQL rpm mirror配置的package

wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm

-2, 安装所获取到的package

sudo rpm -ivh pgdg-centos94-9.4-1.noarch.rpm

-3,使用yum groupinstall安装PostgreSQL

sudo yum groupinstall "PostgreSQL Database Server 9.4 PGDG"

如果你的网络足够的好运,此处你应该已经安装成功了,否则可能会提示无可用的mirror这样的错误了。

不幸的是,我的网络没那么好运气! 我在安装过程中却发现了我的服务器无法连接到mirror,下载不到安装所需要的rpm package。不知道是否因为这些mirror是否都被挡在了墙外,不得不workaround:

有CN特色的安装方式

上文中讲到提示无法找到可用的mirror,之所以要找mirror是因为需要下载对应的package,那么我帮你下载到本地,然后直接安装就可以了(就是这么简单):
-1, 下载PostgreSQL所需要的Server, Libs, Contrib, Client等rpm packages

 - *1.1 这里[PostgreSQL for RHEL5](http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/repoview/postgresqldbserver94.group.html) 可以下载上述所需要的rpm文件们;* 
 - *1.2 最好被他们都放在同一个目录下,这样做的好处是即使rpm packages直接有依赖关系,也可以让系统自己去决定安装先后顺序。 *

-2,使用yum安装所下载到的rpm package

sudo yum install *.rpm

然后一路确认下去,最后就得到了安装成功的提示了。

So, now the installed PostgreSQL instance is ready for use!

简单配置PostgreSQL

成功安装了PostgreSQL之后,现在可以使用它来测试了:一般情况下,安装之后,需要启动服务,然后方能正常使用。先来看看安装PostgreSQL之后,是否有服务安装了,RHEL下,这些服务通常会在/etc/init.d/目录下有对应的启动脚本。查看后发现/etc/init.d/目录下多出了一个文件postgresql-9.4

还是惯例,以root身份启动这个服务,不过这里有可能会提示你启动失败,是因为PostgreSQL 9.4会要求先初始化数据库,然后才能提供服务,提示信息如下:

/var/lib/pgsql/9.4/data is missing. Use "service postgresql-9.4 initdb" to initialize the cluster first.

所以,安装PostgreSQL 9.4之后,正确的使用流程应该是:
-1, 先初始化db

sudo service postgresql-9.4 initdb

此处需要执行一点时间, Be patient!

-2,启动PostgreSQL9.4服务

sudo service postgresql-9.4 start

此处应该能看到绿色的[OK]啦!然后就可以使用PostgreSQL了!

-3, 验证启动结果

- 3.1 安装PostgreSQL成功之后,系统就会自动创建用户postgres这个用户,可以通过查看`/etc/passwd`这个文件,确定是否正确创建了这个用户;
- 3.2 切换到用户postgres登录,使用如下命令查看是否可以正常登录到PostgreSQL数据库,如果提示“postgres=#”则表示已经正确创建了postgres数据库并能正确使用这个数据库了!
-bash-3.2$ psql
psql (9.4.8)
Type "help" for help.
postgres=#

-4,创建用户和库
现在可以创建业务所使用的用户和数据库了,其实创建过程也比较简单(也许没有追求太深入,留后深造!),下面给出主要的命令:

- 4.1 先在root用户下创建一个系统用户 wh
useradd -s /bin/bash -d /home/wh -p passw0rd wh
- 4.2 然后在postgres用户下连接到PostgreSQL Server,执行如下的用户创建命令:
-bash-3.2$ psql
psql (9.4.8)
Type "help" for help.

postgres=# CREATE USER wh WITH PASSWORD 'passw0rd';
- 4.3 创建数据库并授权给所创建的用户    
-bash-3.2$ psql
psql (9.4.8)
Type "help" for help.

postgres=# CREATE DATABASE test_db OWNER wh;
postgres=# GRANT ALL PRIVILEGES ON DATABASE test_db TO wh;
postgres=# \q
- 4.4 切换到wh在用户,尝试连接到数据库
-bash-3.2$ psql test_db
psql (9.4.8)
Type "help" for help.

test_db=>

至此,已经能够正确使用新创建的用户wh成功连接到新创建的PostgreSQL数据库了!

客户端访问PostgreSQL Server

通过上文所做的操作,已经能够让你在PostgreSQL所在机器本身操作创建的数据库了,但是,通常情况下,我们需要从其他的机器连接到数据库服务器,以便更好的让应用服务器和数据库服务器都能发挥出更佳的性能。

通过客户端连接PostgreSQL

  • 1, 通过PostgreSQL Client尝试连接到PostgreSQL Server,却被提示无法连接:
$ psql -h 192.168.1.101 -p 5432 -U wh test_db -W
Password for user wh:
psql: could not connect to server: Connection refused
    Is the server running on host "192.168.1.101" and accepting
    TCP/IP connections on port 5432?

其原因是因为默认情况下,PostgreSQL虽然正确启动了,数据库服务器本身也能够正常的访问,但是,其他的机器并不能通过TCP/IP连接到PostgreSQL服务,默认它并未监听任何TCP/IP端口。

  • 2, 这里就需要配置TCP/IP监听,以便允许其他机器访问PostgreSQL服务:
sudo vim /var/lib/pgsql/9.4/data/postgresql.conf
# 1, 修改listen_addresses = '*'
# 2, 修改port = 5432
# 3, 取消对应行的注释

# 重启PostgreSQL服务
sudo service postgresql-9.4 restart
Stopping postgresql-9.4 service:                           [  OK  ]
Starting postgresql-9.4 service:                           [  OK  ]
  • 3, 再次从客户端尝试连接到PostgreSQL服务
$ psql -h 192.168.1.101 -p 5432 -U wh test_db -W
Password for user wh:
psql: FATAL:  no pg_hba.conf entry for host "192.168.1.102", user "wh", database "test_db", SSL off

出现这个错误有两方面的解释:

  • 首先,端口5432已经开放监听了,并且接收到了PostgreSQL客户端的连接请求;
  • 其次, 验证客户端连接合法性出错了,因为客户端“192.168.1.102”并未被允许连接。
  • 4,添加客户端到白名单
    在PostgreSQL服务器上修改配置文件/var/lib/pgsql/9.4/data/pg_hba.conf
sudo vim /var/lib/pgsql/9.4/data/pg_hba.conf
# 添加允许IP 192.168.1.102连接的配置项
host    all       all       192.168.1.102/32    md5

回到客户端再次尝试连接,你就会发现这次是可以成功连接到PostgreSQL服务了。

$ psql -h 192.168.1.101 -p 5432 -U wh test_db -W
Password for user wh:
psql (9.4.8)
Type "help" for help.

test_db=>

至此,PostgreSQL已经可以在远端Client正常使用了。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
关系型数据库 数据库 数据安全/隐私保护
PostgreSQL安装和使用教程
PostgreSQL安装和使用教程
435 0
|
28天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
61 5
|
1月前
|
数据库
|
7月前
|
安全 关系型数据库 数据库
PostGreSQL安装压缩包格式
PostGreSQL安装压缩包格式
|
7月前
|
SQL 缓存 关系型数据库
postgresql的安装和使用
postgresql的安装和使用
157 0
|
4月前
|
SQL 关系型数据库 Linux
在CentOS 6上安装和使用PostgreSQL的方法
在CentOS 6上安装和使用PostgreSQL的方法
50 2
|
4月前
|
Ubuntu 关系型数据库 数据库
在Ubuntu 18.04上安装和使用PostgreSQL的方法
在Ubuntu 18.04上安装和使用PostgreSQL的方法
75 1
|
4月前
|
Ubuntu 关系型数据库 Linux
在Ubuntu 14.04上安装和使用PostgreSQL的方法
在Ubuntu 14.04上安装和使用PostgreSQL的方法
48 1
|
4月前
|
关系型数据库 Linux 数据库
在CentOS 7上安装和使用PostgreSQL的方法
在CentOS 7上安装和使用PostgreSQL的方法
366 0
|
4月前
|
SQL 关系型数据库 Linux
如何在 Debian 8 上安装和使用 PostgreSQL 9
如何在 Debian 8 上安装和使用 PostgreSQL 9
54 0