2014年8月26日星期二

Linux_083:RHEL下安装PostgreSQL

运行环境:RHEL 6.5  + PostgreSQL 9.3.5

安装方式有rpm方式、yum方式、源代码方式、图形化方式,这里介绍yum方式。

1. 下载PostgreSQL 9.3.5
下载地址:http://www.postgresql.org/download/,进入下载页面后,选择Red Hat Linux。
然后找到“PostgreSQL Yum Repository”,点击“repository RPM listing”,在最新的发布版本PostgreSQL 9.3中点击选择“Red Hat Enterprise Linux 6 - x86_64”下载。

2. 运行 yum install pgdg-redhat93-9.3-1.noarch.rpm 安装PostgreSQL Yum 源

3. 运行 yum install postgresql93-server 安装PostgreSQL Server

4. 初始化数据库 service postgresql-9.3 initdb

5. 开机启动 chkconfig postgresql-9.3 on

6. 查看安装 rpm -qa | grep postgresql,输出如下:postgresql93-libs-9.3.5-1PGDG.rhel6.x86_64
postgresql93-server-9.3.5-1PGDG.rhel6.x86_64
postgresql93-9.3.5-1PGDG.rhel6.x86_64

7. 启动/停止数据库 service postgresql-9.3 start|stop|restart|status
查看更多参数,可以输入service postgresql-9.3,输出如下:
Usage: /etc/init.d/postgresql-9.3 {start|stop|status|restart|upgrade|condrestart|try-restart|reload|force-reload|initdb|promote}

8. 确认数据库可以本地访问
# su - postgres
-bash-4.1$ psql
psql (9.3.5)
postgres-# \q
-bash-4.1$ psql -l
                                     资料库列表
   名称    |  拥有者  | 字元编码 |  校对规则   |    Ctype    |       存取权限  
    
-----------+----------+----------+-------------+-------------+------------------
-----
 postgres  | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |
 template0 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres     
    +
           |          |          |             |             | postgres=CTc/post
gres
 template1 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres     
    +
           |          |          |             |             | postgres=CTc/post
gres
(3 行记录)

9. 允许远程访问PostgreSQL数据库
(1)修改 /var/lib/pgsql/9.3/data/postgresql.conf文件
将文件中的listen_addresses项值设定为“*”。
(2)修改 /var/lib/pgsql/9.3/data/pg_hba.conf文件

在host    all             all             127.0.0.1/32            ident这一行之下,增加一行,内容如下:
host    all             all             192.168.0.0/24          trust

如果你的网段地址是其它的,请修改192.168.0.0/24部分
注意,这里必须是trust,否则使用SQuirreLSQL连不上。
因为SQuirreLSQL使用的是jdbc方式连接,这里要设置成trust。
使用pgAdmin III是可以正确连接的。这主要是由于用户密码认证方式引起的,Postgresql数据库安装好后默认采用md5密码加密认证方式。
各个字段说明:
(1)TYPE:可选的值有:local、host。
前者只能允许本地的用户登陆Postgres数据库;后者可以接受远程客户登陆。
(2)DATABASE:连接用户可以使用的数据库名字。
可以使Postgres的一个具体的数据库名,也可以使用“all”来允许用户访问所有数据库。
(3)USER:可以指定某个具体的用户来连接Postgres数据库(还要结合后面的地址字段)。
可以使用“all”来允许所有用户连接数据库。
(4)DIDR-ADDRESS:IP地址与掩码的另一种表示方法。
Postgres是通过这个字段来了解,允许那些IP或IP网段连接此服务器。
它的格式是: IP地址/掩码。
这个掩码和子网掩码是一个道理,只不过是用一个小于等于32的正数来表示,表示的是子网掩码中高几位为1。
比如,255.255.255.0 就是“24”,说明高24位是1。
192.168.0.1/32 相当于 IP为192.168.0.1,子网掩码为255.255.255.255的网段,
很显然,这只表明192.168.0.1IP自己。
(5)METHOD:这是验证方法。可选的值有:
  • reject:拒绝这个IP的用户访问
  • md5:密码以md5作为hash编码
  • password:密码作为明文传输
  • krb5:密码以krb5作为hash编码
下面举例说明:
(1)host all all 192.168.0.1/32 md5
允许IP为192.168.0.1的所有用户登陆到Postgres服务器的所有数据库,采用md5验证。
(2)host testdb testuser 192.168.0.1/24 md5
允许用户testuser在192.168.0.XX的网段任意机器登陆Postgres服务器,并且只能使用数据库testdb,采用md5验证。

10. 使用SQuirreLSQL客户端连接PostgreSQL数据库
下载PostgreSQL jdbc Driver,下载地址:http://jdbc.postgresql.org/download.html。
根据说明,选择JDBC41 Postgresql Driver, Version 9.3-1102

11. 查询都有哪些schema?
SELECT nspname FROM pg_namespace;

12. 查询某schema下都有哪些表?
SELECT * FROM pg_tables WHERE schemaname ='camel';

13. 查询某个表结构?
\d camel.orders

参考文献:
1. http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.html
2. http://blog.chinaunix.net/uid-354915-id-3498734.html
3. http://www.cnblogs.com/jevonsea/archive/2013/01/24/2874184.html
4. http://www.cnblogs.com/shineqiujuan/archive/2010/08/14/1799755.html
5. http://www.blogjava.net/hengic/articles/217873.html
6. http://www.360doc.com/content/13/0822/10/10384031_309039914.shtml

没有评论: