Ubuntu 安装 postgresql

天天晚上疲劳的睡在床上时,才感受真真切切地过了一天。人生最重要的不只是努力,还有方向。压力不是有人比你努力,而是比你牛叉几倍的人依然比你努力。即便看不到将来,即便看不到但愿,也依然相信,本身错不了,本身选的人生错不了。次日叫醒个人不是闹钟,其实,仍是梦想!!html

2013-07-14 20:08:58linux

1.             准备条件sql

1)         装了GCC的ubuntu操做系统 (我安装在了虚拟机上)数据库

2)         下载好的postgreSQL 9.19源码或二进制包(二进制包也能够在ubuntu上直接获取)ubuntu

2.             postgreSQL安装windows

postgreSQL安装分为源码安装和二进制安装,各有各的好处,源码安装能够本身制定一些参数和设置(详细参考官方文档);二进制安装能够不须要怎么配置就能够直接使用了,简单、方便。但作正规项目部署的话,仍是建议使用源码安装,能够针对项目进行灵活的配置。安全

另问题:我安装上ubuntu后,系统当中并无GCC,我是直接上网apt-get install的;看安装包(ubuntu-12.04.2-server-amd64)中有GCC的目录,但安装时总是提示缺乏依赖,找依赖要找一大堆,麻烦,有知道怎么使用系统安装包装GCC的同窗,请共享下经验呗。app

2.1      二进制包安装dom

1)         在线获取postgreSQL9.1,命令以下:apt-get install postgresql-9.1;不要选错了。以后选择“Y”便可自动安装。socket

安装完成后postgreSQL已经自动启动,以下:

 

2)         安装完成后只需关注刚初始化的数据库管理文件和数据文件的存放位置。

数据文件:/var/lib/postgresql/9.1/main/

数据库配置文件:/etc/postgresql/9.1/main

管理文件和lib库文件:/usr/lib/postgresql/9.1/,里面包括bin和lib目录

3)         安装完成后,postgreSQL会建立一个针对数据库操做的postgres操做系统用户,经过root的su passwd postgres 能够更改系统postgres用户的密码。咱们切换到postgres用户下面,并执行psql命令(能够直接使用psql命令,是由于二进制包的配置在安装时已经将$PATH环境变量写好了),能够看到已经进入到数据中。

 

4)         此时,postgresql数据库已经能够在本机访问了,但要经过客户端(好比windows上装的pgAdmin3,或pgpool-II等第三方组件等),还须要配置两个文件:pg_hba.conf(链接数据库的身份验证方式)、postgresql.conf(数据的配置文件),这些文件都在 数据库配置文件:/etc/postgresql/9.1/main 目录中。其中的配置在下面会讲到。

 

2.2  源码安装

1)         将下载好的源码包(postgresql-9.1.9.tar.gz)上传并进入到/usr/local/src目录下面。如何作linux和windows之间的共享,网上有一大批文章能够参阅,在这里再也不作讲解。我使用的是简单的samba共享

2)         解压缩源码包:tar –zvxf postgresql-9.1.9.tar.gz

 

3)         进入刚解压缩出的postgresql-9.1.9目录:cd postgresql-9.1.9/  能够看到以下文件:

 

4)         此时,咱们须要编译postgresql,--prefix 参数用于指定安装目录,咱们先在/usr/local/下建立postgresql目录,命令以下:mkdir /usr/local/postgresql(图就不贴了);其中还有不少参数,请你们参考官方文档。

在安装过程当中会出现缺乏两个组件的依赖,readline和zlib;readline做用是用psql进入数据库后对操做的记忆,即退出psql后再进入,使用“↑”或“↓”时显示以前打出的命令,跟dos操做差很少。Zlib的做用是后期对日志的压缩。固然,在编译的时候也可使用--without-readline --without-zlib来忽略这两个错误,但咱们如今仍是安装上吧。从网上直接获取,apt-get install libreadline6-dev zlib1g-dev

编译postgresql:./configure --prefix=/usr/local/postgresql

                               make world或make(world指所有编译,也能够不用加)

                               make install-world或make install

 

5)         编译安装完成后在/usr/local/postgresql目录下会出现postgresql的一些管理文件、头文件、库文件等目录。以下图:

 

此时,只是安装了postgresql数据库的软件而已,尚未初始化数据库。先在/usr/local/postgresql目录下面建立一个data目录(固然也能够存放于其余地方),用于存放初始化的数据库的文件。

 

         如今咱们须要一个操做系统级别的管理数据库的组(定义为postgres)和用户(定义为postgres)并修改postgres密码为123,操做命令:

groupadd postgres

useradd –g postgres postgres

passwd postgres

 

         对新建立postgres用户赋予data目录的自由操做权限。命令:chown –R postgres /usr/local/postgresql/data

 

         一切准备就绪,咱们切换到postgres用户,并进入到bin目录,使用initdb命令初始化第一个数据库。Initdb中咱们须要--encoding参数为utf8,设置数据库编码为utf8,咱们将数据库初始化到/usr/local/postgresql/data目录中。其完整命令为:initdb --encoding=utf8 –D /usr/local/postgresql/data

 

至此数据建立完毕,能够看到启动数据库命令的提示,有两种方法启动:(1)./postgres –D ../data (2)./pg_ctl –D  ../data –l logfile start,相对路劲为/usr/local/postgresql/bin;

若是想在同一台机器中部署两个数据库实例,则能够再使用initdb命令将数据库初始化到另外一个目录中,此目录要更改成postgres用户拥有权限,初始化完成后更改端口便可。

 

2.3  postgreSQL安装完成后的配置

2.3.1外部远程访问postgreSQL

postgreSQL数据库初始化安装完毕后,默认只能在本机访问,而其余电脑没法访问本机的postgreSQL。若是须要外部访问postgreSQL,则须要修改几个文件,postgresql.conf、pg_hba.conf;

找到对应的数据目录,若是按本文安装,使用二进制包安装的,数据库配置目录为:/etc/postgresql/9.1/main;若是是按源码安装的,数据库目录为:/usr/local/postgresql/data;打开后目录中能够看到有postgresql.conf、pg_hba.conf文件。

1)         修改postgresql.conf文件:

此文件为数据库的配置文件,包括postgreSQL的链接数量配置、共享内存的配置、日志配置、数据库复制配置等管理用的配置文件。之后配置集群等须要修改此文件。

找到#- Connection Settings - 节下的

#listen_addresses=’localhost’ 改成listen_addresses=’*’ (’#’号注释不要,localhost改成’*’,接受为任何链接)

#port=5432改成port=5432(’#’号注释不要)

2)         修改pg_hba.conf文件:

此文件为数据库的链接配置文件,用来限制或容许什么样的地址以什么样的访问方式能够访问postgreSQL。详细的内容再也不多讲,此文件头部有注释,相信你们均可以看的懂。

在此文件中增长以下行:

host    all             all             0.0.0.0/0               md5

解释下含义:

文件格式为:host  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]

Host:主机访问类型,local为Unix-domain socket链接访问方式,host为TCP/IP socket或SSL-encrypted TCP/IP socket链接访问方式。

第一个all:要访问的数据库,all则为所有。

第二个all:以那个用户访问数据库,all则为所有

0.0.0.0/0:容许全部IP访问

md5:以md5的链接访问postgreSQL,若是是trust,则链接postgreSQL不须要密码。但为安全起见,咱们使用md5。

至此,两个文件都已经更改完毕,从新启动postgreSQL便可。切换postgres用户,输入重启数据库命令:./pg_ctl –D ../data restart

但此时使用pgadmin-III链接postgreSQL时会出现如下错误FATAL:  password authentication failed for user "postgres",

 

缘由为初始化数据库后,系统会自动添加一个无密码的postgres用户,并且使用本机访问数据库时是trust方式的(详见pg_hba.conf文件),所以在本机访问数据库能够不须要密码,但非本机的链接则须要密码,因此咱们须要在数据库中增长postgres用户的密码。