PostgreSQL数据库的安装与配置

来源:互联网 发布:sql语句使用别名 编辑:程序博客网 时间:2024/06/05 02:10

PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES(4.2版本)为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、多版本并发控制。同样,PostgreSQL 可以用许多方法扩展,比如,通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。并且,因为许可证的灵活,任何人都可以以任何目的免费使用,修改和分发 PostgreSQL,不管是私用,商用,还是学术研究使用。

 

下面我们就来介绍一下PostgreSQL在CentOS 5.x上的安装与配置:

1. PostgreSQL数据库的安装

首先去PostgreSQL官方网站去下载相关的PostgreSQLrpm安装包,下载地址为:

http://yum.postgresql.org/packages.php

由于安装包比较多,其实我们只需要postgresql-libs库、postgresql客户端和postgresql服务器这三个rpm包就可以了。

1.       安装postgresql-libs

[root@RPUMaster PostgreSQL]#rpm -ivh postgresql91-libs-9.1.2-1PGDG.rhel5.i386.rpm

2.       安装postgresql客户端

[root@RPUMaster PostgreSQL]#rpm -ivh postgresql91-9.1.2-1PGDG.rhel5.i386.rpm

3.       安装postgresql服务器

[root@RPUMaster PostgreSQL]#rpm -ivh postgresql91-server-9.1.2-1PGDG.rhel5.i386.rpm

这样就安装好了PostgreSQL数据库,其数据库默认的存放路径为【/var/lib】,由于我们给数据库划分了【/data】分区,需要将数据库路径修改成【/data】,操作如下:

[root@RPUMaster PostgreSQL]#vim /etc/init.d/postgresql-9.1

4.       初始化数据库和启动服务

[root@RPUMaster PostgreSQL]#/etc/init.d/postgresql-9.1 initdb

[root@RPUMaster PostgreSQL]#/etc/init.d/postgresql-9.1 start

执行【/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服务器安装完成后,默认是不会开机启动的,使用下面的命令让其开机启动:

[root@RPUMaster PostgreSQL]#chkconfig postgresql-9.1 on

2.2 配置PostgreSQL服务器的登录密码

PostgreSQL服务器安装完成后,就会建立postgres用户,密码为空,但这时使用如果客户端命令【psql -U postgres】来登录PostgreSQL服务器是登录不上的,命令如下:

[root@RPUMaster PostgreSQL]#psql -U postgres

psql: FATAL: Peer authentication failed for user "postgres"

看来是用户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 远程访问权限

如果你用NavicatPostgreSQL前端工具来访问PostgreSQL服务器,发现还是连接不上的,看来还得对PostgreSQL服务器进行配置。

配置操作过程如下:

1.       首先看看防火墙是否开启,如果开启需要允许5432端口的连通。如不知怎样配置防火墙,就关闭它。

2.       配置postgresql.conf文件,它和pg_hba.conf文件在同一个目录下。如果想让PostgreSQL监听整个网络的话,将listen_addresses前的#去掉,并将listen_addresses = 'localhost'改成listen_addresses = '*',其中*表示所有网络链接:

listen_addresses = '*'

3.       修改pg_hba.conf文件,在其最后添加:

host   all             all             0.0.0.0/0                md5

其中0.0.0.0/0表示所有IP地址。修改好这两个配置文件后,重启postgresql服务,就可以远程访问PostgreSQL服务器了。

原创粉丝点击