Postgresql是以加州大学伯克利分校计算机系开发的 POSTGRES(4.2版本)为基础的对象关系型数据库管理系统(ORDBMS)。Postgresql支持大部分 sql标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、多版本并发控制。同样,Postgresql 可以用许多方法扩展,比如,通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。并且,因为许可证的灵活,任何人都可以以任何目的免费使用,修改和分发 Postgresql,不管是私用,商用,还是学术研究使用。
下面我们就来介绍一下Postgresql在CentOS 5.x上的安装与配置:
1.Postgresql数据库的安装
首先去Postgresql官方网站去下载相关的Postgresql的rpm安装包,下载地址为:
http://yum.postgresql.org/packages.php
由于安装包比较多,其实我们只需要postgresql-libs库、postgresql客户端和postgresql服务器这三个rpm包就可以了。
1. 安装postgresql-libs库
2. 安装postgresql客户端
3. 安装postgresql服务器
4. 初始化数据库和启动服务
执行【/etc/init.d/postgresql-9.1 initdb】命令,就在【/var/lib/pgsql/9.1/data】目录下创建了Postgresql数据库,这样就完成了Postgresql数据库的安装工作。
2. Postgresql数据库的配置
Postgresql安装完成后,执行初始化数据库操作后,在目录【/var/lib/pgsql/9.1】下生成data目录,这个目录保存了数据库的相关配置信息。
2.1 配置postgresql服务
Postgresql服务器安装完成后,默认是不会开机启动的,使用下面的命令让其开机启动:
2.2 配置Postgresql服务器的登录密码
Postgresql服务器安装完成后,就会建立postgres用户,密码为空,但这时使用如果客户端命令【psql -U postgres】来登录Postgresql服务器是登录不上的,命令如下:
看来是用户postgres的权限和认证方式有问题,这该怎么办呢?答案很简单,直接找度娘!
原来是目录【/var/lib/pgsql/9.1/data】下的pg_hba.conf文件决定了Postgresql服务器用户的权限以及认证方式。
pg_hba.conf文件最后有一个列表,它决定了分派给每个用户的权限以及认证方式。文件格式是“Type Database User Address Method”。
下面介绍如何为用户postgres添加密码"123456",操作如下:
1. 修改pg_hba.conf文件中的【local all all peer】行,暂时将【peer】选项修改成【trust】,重启postgresql服务,就可以登录Postgresql服务器了;
2. 登录Postgresql服务器,使用数据库命令来修改用户密码,命令如下:
[root@RPUMaster Postgresql]# psql -U postgres psql (9.1.2) Type "help" for help.
postgres=# SELECT usename,passwd FROM pg_shadow; usename | passwd ----------------+---------------------------------------------------------- postgres | (1 row)
postgres=# ALTER USER postgres PASSWORD '123456'; ALTER ROLE postgres=# SELECT usename,passwd FROM pg_shadow; usename | passwd ----------------+---------------------------------------------------------- postgres | md57521781ec5135ab1713b83ee4e714d7e (1 row) |
这样通过前后select语句对比,就知道密码设置成功了。
3. 然后修改pg_hba.conf文件中的【local all all peer】行,将【trust】选项修改成【md5】,重启postgresql服务,这样以后登录Postgresql服务器就需要输入密码了。
2.3 配置Postgresql服务器的访问权限
Postgresql服务器的配置权限包括本地访问和远程访问的权限,下面我就逐一介绍这两种访问权限的配置方法。
2.3.1 本机访问权限
所谓的本机访问权限就是使用【psql -U postgres –h localhost】来登录Postgresql服务器,其实这个配置比较简单,只需要修改pg_hba.conf文件中的【host all all 127.0.0.1/32 ident】行,将【ident】选项修改成【md5】,重启postgresql服务就可以了。
2.3.2 远程访问权限
如果你用Navicat等Postgresql前端工具来访问Postgresql服务器,发现还是连接不上的,看来还得对Postgresql服务器进行配置。
配置操作过程如下:
1. 首先看看防火墙是否开启,如果开启需要允许5432端口的连通。如不知怎样配置防火墙,就关闭它。
2. 配置postgresql.conf文件,它和pg_hba.conf文件在同一个目录下。如果想让Postgresql监听整个网络的话,将listen_addresses前的#去掉,并将listen_addresses = 'localhost'改成listen_addresses = '*',其中*表示所有网络链接:
listen_addresses = '*' |
host all all 0.0.0.0/0 md5 |
其中0.0.0.0/0表示所有IP地址。修改好这两个配置文件后,重启postgresql服务,就可以远程访问Postgresql服务器了。