Linux(CentOS)下安装配置和使用PostgreSQL数据库
2015-10-13 11:24
1151 查看
以前对PostgreSQL研究比较少,这几天没事就对这个数据库研究一下,第一步当然是安装了
相关软件可在在官网上下载:http://www.postgresql.org/download/
其实安装也比较简单,现将软件SSH到root用户下(注意,只能在root用户下安装)
一、简介
PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。
二、系统环境
系统平台:CentOS release 6.3 (Final)
PostgreSQL 版本:PostgreSQL 9.2.4
防火墙已关闭/iptables: Firewall is not running.
SELINUX=disabled
编译环境:
gcc: 4.1.2
三、安装方式
A. RPM包安装
B. yum 安装
C. 源码包安装
安装过程中全部回车即可,不过你需要弄清楚都做了些什么
1:PostgreSQL软件装在什么地方
2:PostgreSQL的数据Data放在什么地方
3:为超级用户postgres设置密码以及确认
4:设置端口号默认的是5432
5:选择字符集
6:是否继续
四、安装过程
A. RPM包安装
1. 检查PostgreSQL 是否已经安装
# rpm -qa|grep postgres
若已经安装,则使用rpm -e 命令卸载。
2. 下载RPM包
#wget http://yum.postgresql.org/9.2/ href="http://www.linuxidc.com/topicnews.aspx?tid=10" target=_blank>RedHat/rhel-6-i386/postgresql92-server-9.2.4-1PGDG.rhel6.i686.rpm
#wget http://yum.postgresql.org/9.2/redhat/rhel-6-i386/postgresql92-contrib-9.2.4-1PGDG.rhel6.i686.rpm
#wget http://yum.postgresql.org/9.2/redhat/rhel-6-i386/postgresql92-libs-9.2.4-1PGDG.rhel6.i686.rpm
#wget http://yum.postgresql.org/9.2/redhat/rhel-6-i386/postgresql92-9.2.4-1PGDG.rhel6.i686.rpm
3. 安装PostgreSQL,注意安装顺序
# rpm -ivh postgresql92-libs-9.2.4-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql92-9.2.4-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql92-server-9.2.4-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql92-contrib-9.2.4-1PGDG.rhel6.i686.rpm
4. 初始化PostgreSQL 数据库
PostgreSQL 服务初次启动的时候会提示初始化。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/b62d430b846351bea6b8f3099700bcb7.jpg)
初始化数据库
# service postgresql-9.2 initdb
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c3756822cc777808d6e7771aad0168d6.jpg)
5. 启动服务
# service postgresql-9.2 start
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/137553f505a58da15f6799520bda464c.jpg)
6. 把PostgreSQL 服务加入到启动列表
# chkconfig postgresql-9.2 on
# chkconfig --list|grep postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/7f6d6d07168d562702720976dea62d78.jpg)
7. 修改PostgreSQL 数据库用户postgres的密码(注意不是linux系统帐号)
PostgreSQL 数据库默认会创建一个postgres的数据库用户作为数据库的管理员,默认密码为空,我们需要修改为指定的密码,这里设定为’postgres’。
# su - postgres
$ psql
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/4fd989b22d6f0bd40e24680ea6e3e378.jpg)
8. 测试数据库
8.1 创建测试数据库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/bd71a84b69a4291398e6402af03a8a3f.jpg)
8.2 切换到david 数据库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/833cd75ae3b8edf6a906aefc1750ba2b.jpg)
8.3 创建测试表
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/e47b2029ed111afab254c990fd65c325.jpg)
8.4 插入测试数据
8.5 选择数据
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/800aec78872d705162beeb4710c4ebaa.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/800aec78872d705162beeb4710c4ebaa.gif)
测试完成,RPM包安装成功。
9. 修改linux 系统用户postgres 的密码
PostgreSQL 数据库默认会创建一个linux 系统用户postgres,通过passwd 命令设置系统用户的密码为post123。
# passwd postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/842d3dcd106367b456a315b83f89bcb1.jpg)
10. 修改PostgresSQL 数据库配置实现远程访问
10.1 修改postgresql.conf 文件
# vi /var/lib/pgsql/9.2/data/postgresql.conf
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/a924b76661db5fdc10923562dd83145a.jpg)
如果想让PostgreSQL 监听整个网络的话,将listen_addresses 前的#去掉,并将 listen_addresses = 'localhost' 改成 listen_addresses = '*'
10.2 修改客户端认证配置文件pg_hba.conf
将需要远程访问数据库的IP地址或地址段加入该文件。
# vi /var/lib/pgsql/9.2/data/pg_hba.conf
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/d49bc0f44bd1bc223c699a7429b4e4ea.jpg)
11. 重启服务以使设置生效
# service postgresql-9.2 restart
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/f3d28f8f7c33f07c94bd617854bc7d1e.jpg)
12. 远程测试连接
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/118593a1c7a52c56269a684517d3771b.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c9af3fd17f754cb205bba08e55ad8f46.jpg)
连接成功。
B. yum 安装
1. 将刚才安装的PostgreSQL 卸载
//停止PostgreSQL服务
# /etc/init.d/postgresql-9.2 stop
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/6ed726219be711065a10c221f9150481.jpg)
//查看已安装的包
# rpm -qa|grep postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/6694adc7814dff70251a05e4e1831187.jpg)
//卸载
# rpm -e postgresql92-server-9.2.4-1PGDG.rhel6.i686
# rpm -e postgresql92-contrib-9.2.4-1PGDG.rhel6.i686
# rpm -e postgresql92-9.2.4-1PGDG.rhel6.i686
# rpm -e postgresql92-libs-9.2.4-1PGDG.rhel6.i686
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/140feeed36f2128a166a582d397e0200.jpg)
2. yum 安装
如果是默认yum 安装的话,会安装较低版本的PostgreSQL 8.4,这不符合我们的要求。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/e5ab0573808e12f67107d47be4ee8fbc.jpg)
我们使用PostgreSQL Yum Repository 来安装最新版本的PostgreSQL。
2.1 安装PostgreSQL yum repository
# rpm -i http://yum.postgresql.org/9.2/ href="http://www.linuxidc.com/topicnews.aspx?tid=10" target=_blank>RedHat/rhel-6-x86_64/pgdg-redhat92-9.2-7.noarch.rpm
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/028ab39fd3b95f5bb149ab660d1464fd.jpg)
2.2 安装新版本PostgreSQL
# yum install postgresql92-server postgresql92-contrib
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/3c516b71485b3a114e0927e4f0ff6d80.jpg)
2.3 查看安装
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/b622544b7de54e0da61f8eeb01ee2df3.jpg)
3. 初始化并启动数据库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c9655ef00686379ff12af72af32cf04e.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/5cbf63d7b2522039941963c344df5b08.jpg)
4. 测试
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/5ed329eb540b1f4af9f9f733cc560ce5.jpg)
其他步骤如A方式。
C. 源码包安装
1. 下载PostgreSQL 源码包
# wget http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2
2. 解压源码包
# tar xjf postgresql-9.2.4.tar.bz2
3. 进入解压后的目录
# cd postgresql-9.2.4
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c63cd858ecb1951fe8f7c964fd2379b0.jpg)
4. 查看INSTALL 文件
INSTALL 文件中Short Version 部分解释了如何安装PostgreSQL 的命令,Requirements 部分描述了安装PostgreSQL 所依赖的lib,比较长,先configure 试一下,如果出现error,那么需要检查是否满足了Requirements 的要求。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c1b820c828461037ee9baf587a60733e.jpg)
5. 开始编译安装PostgreSQL 数据库。
[root@TS-DEV postgresql-9.2.4]# ./configure
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/4070b3b15d25cc524f24411e36c06e21.jpg)
configure 成功,无错误。
6. 执行gmake
[root@TS-DEV postgresql-9.2.4]# gmake
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/010bf9b112d93e1f1b1a5a1d7f9ede92.jpg)
gmake 成功,Ready to install.
7. 执行gmake install
[root@TS-DEV postgresql-9.2.4]# gmake install
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/f3c58ae99d67d89ea155bc390a86e707.jpg)
gmake install 成功,到这一步,PostgreSQL 源码编译安装完成,下面开始配置PostgreSQL.
8. 设置环境变量
# vi .bash_profile
把 PATH=$PATH:$HOME/bin
改成 PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin
保存退出。
让环境变量生效:
# source .bash_profile
9. 添加用户postgres
# adduser postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/3c5545852b26eae1f5e324fd6649c0df.jpg)
* 更改用户目录(可选操作)
# vi /etc/passwd
把 postgres:x:528:528::/home/postgres:/bin/bash
改成 postgres:x:528:528::/usr/local/pgsql:/bin/bash
将.bash_profile 移动到新的用户目录并修改权限
# cp /home/postgres/.bash_profile /usr/local/pgsql/
# chown postgres.postgres .bash_profile
删除用户目录:
[root@TS-DEV home]# rm -rf postgres/
10. 初始化数据库
10.1 新建数据目录
# mkdir /usr/local/pgsql/data
10.2 更改权限
# chown postgres /usr/local/pgsql/data
10.3 切换到postgres 用户
# su - postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/a70a1f3ca73425837ce1c50c71e111ad.jpg)
10.4 init db
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/78c5e6c07f57295b66ba48ae63b047a1.jpg)
到这里数据的初始化就完成了。
11. 系统服务
11.1 回到root 用户
$ exit
11.2 复制安装目录下的linux文件到/etc/init.d/
进入postgresql 的安装目录(即刚刚使用tar命令解压的目录)
# cd postgresql-9.2.4
# cp contrib/start-scripts/linux /etc/init.d/postgresql
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/19df3402fdda7f14b631c15c644b1822.jpg)
11.3 添加执行权限
# chmod +x /etc/init.d/postgresql
11.4 启动数据库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/4ad6b5febd5bb3d1dc8aef822c6f3580.jpg)
11.5 让数据库开机启动
# chkconfig --add postgresql
# chkconfig postgresql on
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/2fad8439be6c62ec7efb5f4e6d5002b3.jpg)
11.6 创建数据库操作的历史记录文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/d31a57f58513b52f72502c32038e4d58.jpg)
12. 测试使用
# su - postgres
$ createdb test
$ psql test
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c060d229ebe61b2c525b9993c0179923.jpg)
源码编译安装成功。
【附录下载地址】
[b][b]PostgreSQL 的下载地址[/b]:请点这里
[/b]
如果安装成功后,我们可以看到,系统会自动创建一个postgres用户,他所在的路径为你选择的PostgreSQL安装的路径,不过该用户的环境变量没有设置好,我们需要设置一下即可
[root@rhsde opt]# su - postgres
-bash-3.2$ pwd
/opt/PostgreSQL/9.0
-bash-3.2$ su -
Password:
[root@rhsde ~]# cp .bash_profile /opt/PostgreSQL/9.0
[root@rhsde ~]# cp .bashrc /opt/PostgreSQL/9.0
[root@rhsde ~]# su - postgres
然后就是,虽然是root用户下安装,那么安装的文件的权限所属的是root用户,那么我们需要将这些文件转为postgres用户
[root@rhsde PostgreSQL]# ll
total 4
drwxr-xr-x 12 root daemon 4096 8月 24 08:52 9.0
[root@rhsde PostgreSQL]# pwd
/opt/PostgreSQL
[root@rhsde PostgreSQL]# chown -R postgres:postgres /opt/PostgreSQL/
[root@rhsde PostgreSQL]# ll
total 4
drwxr-xr-x 12 postgres postgres 4096 8月 24 08:52 9.0
然后设置postgres用户的环境变量
export PGHOME=/opt/PostgreSQL/9.0
export PATH=$PGHOME/bin:$PATH
export PGDATA=$PGHOME/data
export LD_LIBRARY_PATH=$PGHOME/lib
然后我们可以启动服务,其实默认服务以及启动了
[root@rhsde ~]# service postgresql-9.0 start
Starting PostgreSQL 9.0:
pg_ctl: another server might be running; trying to start server anyway
pg_ctl: could not start server
Examine the log output.
PostgreSQL 9.0 did not start in a timely fashion, please see /opt/PostgreSQL/9.0/data/pg_log/startup.log for details
查看一下相关日志,我们可以看到已经启动了服务
[root@rhsde ~]# more /opt/PostgreSQL/9.0/data/pg_log/startup.log
2012-08-24 00:56:54 GMT FATAL: lock file "postmaster.pid" already exists
2012-08-24 00:56:54 GMT HINT: Is another postmaster (PID 27765) running in data direc
tory "/opt/PostgreSQL/9.0/data"?
我们也可以检查一下服务状态和端口情况
[root@rhsde ~]# chkconfig --list postgresql-9.0
postgresql-9.0 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@rhsde ~]# netstat -ano | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 :::5432 :::* LISTEN off (0.00/0/0)
unix 2 [ ACC ] STREAM LISTENING 3759370 /tmp/.s.PGSQL.5432
那么我们可以验证一下是否可以连接上
[postgres@rhsde ~]$ cd scripts/
[postgres@rhsde scripts]$ ls
images launchpsql.sh runpsql.sh xdg
launchbrowser.sh launchstackbuilder.sh runstackbuilder.sh
launchpgadmin.sh launchsvrctl.sh serverctl.sh
[postgres@rhsde scripts]$ ./runpsql.sh
Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
Password for user postgres:
psql.bin (9.0.8)
Type "help" for help.
postgres=#
如果其他机器连接该数据库服务器,我们还要修改/opt/PostgreSQL/9.0/data/pg_hba.conf文件
如果软件安装完毕,我们也可以在Linux的开始菜单看到相关的信息
其实最简单的方法如下
![](http://img.my.csdn.net/uploads/201210/24/1351057010_3245.jpg)
【更多精彩资料参考】
PostgreSQL缓存详述 http://www.linuxidc.com/Linux/2013-07/87778.htm
Windows平台编译 PostgreSQL http://www.linuxidc.com/Linux/2013-05/85114.htm
Ubuntu下LAPP(Linux+Apache+PostgreSQL+PHP)环境的配置与安装 http://www.linuxidc.com/Linux/2013-04/83564.htm
Ubuntu上的phppgAdmin安装及配置 http://www.linuxidc.com/Linux/2011-08/40520.htm
CentOS平台下安装PostgreSQL9.3 http://www.linuxidc.com/Linux/2014-05/101723.htm
PostgreSQL配置Streaming Replication集群 http://www.linuxidc.com/Linux/2014-05/101724.htm
---------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
---------------------------------------------------------------------------------------------------
相关软件可在在官网上下载:http://www.postgresql.org/download/
其实安装也比较简单,现将软件SSH到root用户下(注意,只能在root用户下安装)
一、简介
PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。
二、系统环境
系统平台:CentOS release 6.3 (Final)
PostgreSQL 版本:PostgreSQL 9.2.4
防火墙已关闭/iptables: Firewall is not running.
SELINUX=disabled
编译环境:
gcc: 4.1.2
三、安装方式
A. RPM包安装
B. yum 安装
C. 源码包安装
安装过程中全部回车即可,不过你需要弄清楚都做了些什么
1:PostgreSQL软件装在什么地方
2:PostgreSQL的数据Data放在什么地方
3:为超级用户postgres设置密码以及确认
4:设置端口号默认的是5432
5:选择字符集
6:是否继续
四、安装过程
A. RPM包安装
1. 检查PostgreSQL 是否已经安装
# rpm -qa|grep postgres
若已经安装,则使用rpm -e 命令卸载。
2. 下载RPM包
#wget http://yum.postgresql.org/9.2/ href="http://www.linuxidc.com/topicnews.aspx?tid=10" target=_blank>RedHat/rhel-6-i386/postgresql92-server-9.2.4-1PGDG.rhel6.i686.rpm
#wget http://yum.postgresql.org/9.2/redhat/rhel-6-i386/postgresql92-contrib-9.2.4-1PGDG.rhel6.i686.rpm
#wget http://yum.postgresql.org/9.2/redhat/rhel-6-i386/postgresql92-libs-9.2.4-1PGDG.rhel6.i686.rpm
#wget http://yum.postgresql.org/9.2/redhat/rhel-6-i386/postgresql92-9.2.4-1PGDG.rhel6.i686.rpm
3. 安装PostgreSQL,注意安装顺序
# rpm -ivh postgresql92-libs-9.2.4-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql92-9.2.4-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql92-server-9.2.4-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql92-contrib-9.2.4-1PGDG.rhel6.i686.rpm
4. 初始化PostgreSQL 数据库
PostgreSQL 服务初次启动的时候会提示初始化。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/b62d430b846351bea6b8f3099700bcb7.jpg)
初始化数据库
# service postgresql-9.2 initdb
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c3756822cc777808d6e7771aad0168d6.jpg)
5. 启动服务
# service postgresql-9.2 start
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/137553f505a58da15f6799520bda464c.jpg)
6. 把PostgreSQL 服务加入到启动列表
# chkconfig postgresql-9.2 on
# chkconfig --list|grep postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/7f6d6d07168d562702720976dea62d78.jpg)
7. 修改PostgreSQL 数据库用户postgres的密码(注意不是linux系统帐号)
PostgreSQL 数据库默认会创建一个postgres的数据库用户作为数据库的管理员,默认密码为空,我们需要修改为指定的密码,这里设定为’postgres’。
# su - postgres
$ psql
# ALTER USER postgres WITH PASSWORD 'postgres'; # select * from pg_shadow ;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/4fd989b22d6f0bd40e24680ea6e3e378.jpg)
8. 测试数据库
8.1 创建测试数据库
# create database david;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/bd71a84b69a4291398e6402af03a8a3f.jpg)
8.2 切换到david 数据库
# \c david
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/833cd75ae3b8edf6a906aefc1750ba2b.jpg)
8.3 创建测试表
david=# create table test (id integer, name text);
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/e47b2029ed111afab254c990fd65c325.jpg)
8.4 插入测试数据
david=# insert into test values (1,'david'); INSERT 0 1 david=#
8.5 选择数据
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/800aec78872d705162beeb4710c4ebaa.gif)
david=# select * from test ; id | name ----+------- 1 | david (1 row) david=#
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/800aec78872d705162beeb4710c4ebaa.gif)
测试完成,RPM包安装成功。
9. 修改linux 系统用户postgres 的密码
PostgreSQL 数据库默认会创建一个linux 系统用户postgres,通过passwd 命令设置系统用户的密码为post123。
# passwd postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/842d3dcd106367b456a315b83f89bcb1.jpg)
10. 修改PostgresSQL 数据库配置实现远程访问
10.1 修改postgresql.conf 文件
# vi /var/lib/pgsql/9.2/data/postgresql.conf
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/a924b76661db5fdc10923562dd83145a.jpg)
如果想让PostgreSQL 监听整个网络的话,将listen_addresses 前的#去掉,并将 listen_addresses = 'localhost' 改成 listen_addresses = '*'
10.2 修改客户端认证配置文件pg_hba.conf
将需要远程访问数据库的IP地址或地址段加入该文件。
# vi /var/lib/pgsql/9.2/data/pg_hba.conf
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/d49bc0f44bd1bc223c699a7429b4e4ea.jpg)
11. 重启服务以使设置生效
# service postgresql-9.2 restart
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/f3d28f8f7c33f07c94bd617854bc7d1e.jpg)
12. 远程测试连接
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/118593a1c7a52c56269a684517d3771b.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c9af3fd17f754cb205bba08e55ad8f46.jpg)
连接成功。
B. yum 安装
1. 将刚才安装的PostgreSQL 卸载
//停止PostgreSQL服务
# /etc/init.d/postgresql-9.2 stop
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/6ed726219be711065a10c221f9150481.jpg)
//查看已安装的包
# rpm -qa|grep postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/6694adc7814dff70251a05e4e1831187.jpg)
//卸载
# rpm -e postgresql92-server-9.2.4-1PGDG.rhel6.i686
# rpm -e postgresql92-contrib-9.2.4-1PGDG.rhel6.i686
# rpm -e postgresql92-9.2.4-1PGDG.rhel6.i686
# rpm -e postgresql92-libs-9.2.4-1PGDG.rhel6.i686
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/140feeed36f2128a166a582d397e0200.jpg)
2. yum 安装
如果是默认yum 安装的话,会安装较低版本的PostgreSQL 8.4,这不符合我们的要求。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/e5ab0573808e12f67107d47be4ee8fbc.jpg)
我们使用PostgreSQL Yum Repository 来安装最新版本的PostgreSQL。
2.1 安装PostgreSQL yum repository
# rpm -i http://yum.postgresql.org/9.2/ href="http://www.linuxidc.com/topicnews.aspx?tid=10" target=_blank>RedHat/rhel-6-x86_64/pgdg-redhat92-9.2-7.noarch.rpm
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/028ab39fd3b95f5bb149ab660d1464fd.jpg)
2.2 安装新版本PostgreSQL
# yum install postgresql92-server postgresql92-contrib
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/3c516b71485b3a114e0927e4f0ff6d80.jpg)
2.3 查看安装
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/b622544b7de54e0da61f8eeb01ee2df3.jpg)
3. 初始化并启动数据库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c9655ef00686379ff12af72af32cf04e.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/5cbf63d7b2522039941963c344df5b08.jpg)
4. 测试
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/5ed329eb540b1f4af9f9f733cc560ce5.jpg)
其他步骤如A方式。
C. 源码包安装
1. 下载PostgreSQL 源码包
# wget http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2
2. 解压源码包
# tar xjf postgresql-9.2.4.tar.bz2
3. 进入解压后的目录
# cd postgresql-9.2.4
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c63cd858ecb1951fe8f7c964fd2379b0.jpg)
4. 查看INSTALL 文件
INSTALL 文件中Short Version 部分解释了如何安装PostgreSQL 的命令,Requirements 部分描述了安装PostgreSQL 所依赖的lib,比较长,先configure 试一下,如果出现error,那么需要检查是否满足了Requirements 的要求。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c1b820c828461037ee9baf587a60733e.jpg)
5. 开始编译安装PostgreSQL 数据库。
[root@TS-DEV postgresql-9.2.4]# ./configure
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/4070b3b15d25cc524f24411e36c06e21.jpg)
configure 成功,无错误。
6. 执行gmake
[root@TS-DEV postgresql-9.2.4]# gmake
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/010bf9b112d93e1f1b1a5a1d7f9ede92.jpg)
gmake 成功,Ready to install.
7. 执行gmake install
[root@TS-DEV postgresql-9.2.4]# gmake install
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/f3c58ae99d67d89ea155bc390a86e707.jpg)
gmake install 成功,到这一步,PostgreSQL 源码编译安装完成,下面开始配置PostgreSQL.
8. 设置环境变量
# vi .bash_profile
把 PATH=$PATH:$HOME/bin
改成 PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin
保存退出。
让环境变量生效:
# source .bash_profile
9. 添加用户postgres
# adduser postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/3c5545852b26eae1f5e324fd6649c0df.jpg)
* 更改用户目录(可选操作)
# vi /etc/passwd
把 postgres:x:528:528::/home/postgres:/bin/bash
改成 postgres:x:528:528::/usr/local/pgsql:/bin/bash
将.bash_profile 移动到新的用户目录并修改权限
# cp /home/postgres/.bash_profile /usr/local/pgsql/
# chown postgres.postgres .bash_profile
删除用户目录:
[root@TS-DEV home]# rm -rf postgres/
10. 初始化数据库
10.1 新建数据目录
# mkdir /usr/local/pgsql/data
10.2 更改权限
# chown postgres /usr/local/pgsql/data
10.3 切换到postgres 用户
# su - postgres
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/a70a1f3ca73425837ce1c50c71e111ad.jpg)
10.4 init db
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/78c5e6c07f57295b66ba48ae63b047a1.jpg)
到这里数据的初始化就完成了。
11. 系统服务
11.1 回到root 用户
$ exit
11.2 复制安装目录下的linux文件到/etc/init.d/
进入postgresql 的安装目录(即刚刚使用tar命令解压的目录)
# cd postgresql-9.2.4
# cp contrib/start-scripts/linux /etc/init.d/postgresql
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/19df3402fdda7f14b631c15c644b1822.jpg)
11.3 添加执行权限
# chmod +x /etc/init.d/postgresql
11.4 启动数据库
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/4ad6b5febd5bb3d1dc8aef822c6f3580.jpg)
11.5 让数据库开机启动
# chkconfig --add postgresql
# chkconfig postgresql on
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/2fad8439be6c62ec7efb5f4e6d5002b3.jpg)
11.6 创建数据库操作的历史记录文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/d31a57f58513b52f72502c32038e4d58.jpg)
12. 测试使用
# su - postgres
$ createdb test
$ psql test
test=# create table test(id int);
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/13/c060d229ebe61b2c525b9993c0179923.jpg)
源码编译安装成功。
【附录下载地址】
[b][b]PostgreSQL 的下载地址[/b]:请点这里
[/b]
如果安装成功后,我们可以看到,系统会自动创建一个postgres用户,他所在的路径为你选择的PostgreSQL安装的路径,不过该用户的环境变量没有设置好,我们需要设置一下即可
[root@rhsde opt]# su - postgres
-bash-3.2$ pwd
/opt/PostgreSQL/9.0
-bash-3.2$ su -
Password:
[root@rhsde ~]# cp .bash_profile /opt/PostgreSQL/9.0
[root@rhsde ~]# cp .bashrc /opt/PostgreSQL/9.0
[root@rhsde ~]# su - postgres
然后就是,虽然是root用户下安装,那么安装的文件的权限所属的是root用户,那么我们需要将这些文件转为postgres用户
[root@rhsde PostgreSQL]# ll
total 4
drwxr-xr-x 12 root daemon 4096 8月 24 08:52 9.0
[root@rhsde PostgreSQL]# pwd
/opt/PostgreSQL
[root@rhsde PostgreSQL]# chown -R postgres:postgres /opt/PostgreSQL/
[root@rhsde PostgreSQL]# ll
total 4
drwxr-xr-x 12 postgres postgres 4096 8月 24 08:52 9.0
然后设置postgres用户的环境变量
export PGHOME=/opt/PostgreSQL/9.0
export PATH=$PGHOME/bin:$PATH
export PGDATA=$PGHOME/data
export LD_LIBRARY_PATH=$PGHOME/lib
然后我们可以启动服务,其实默认服务以及启动了
[root@rhsde ~]# service postgresql-9.0 start
Starting PostgreSQL 9.0:
pg_ctl: another server might be running; trying to start server anyway
pg_ctl: could not start server
Examine the log output.
PostgreSQL 9.0 did not start in a timely fashion, please see /opt/PostgreSQL/9.0/data/pg_log/startup.log for details
查看一下相关日志,我们可以看到已经启动了服务
[root@rhsde ~]# more /opt/PostgreSQL/9.0/data/pg_log/startup.log
2012-08-24 00:56:54 GMT FATAL: lock file "postmaster.pid" already exists
2012-08-24 00:56:54 GMT HINT: Is another postmaster (PID 27765) running in data direc
tory "/opt/PostgreSQL/9.0/data"?
我们也可以检查一下服务状态和端口情况
[root@rhsde ~]# chkconfig --list postgresql-9.0
postgresql-9.0 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@rhsde ~]# netstat -ano | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 :::5432 :::* LISTEN off (0.00/0/0)
unix 2 [ ACC ] STREAM LISTENING 3759370 /tmp/.s.PGSQL.5432
那么我们可以验证一下是否可以连接上
[postgres@rhsde ~]$ cd scripts/
[postgres@rhsde scripts]$ ls
images launchpsql.sh runpsql.sh xdg
launchbrowser.sh launchstackbuilder.sh runstackbuilder.sh
launchpgadmin.sh launchsvrctl.sh serverctl.sh
[postgres@rhsde scripts]$ ./runpsql.sh
Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
Password for user postgres:
psql.bin (9.0.8)
Type "help" for help.
postgres=#
如果其他机器连接该数据库服务器,我们还要修改/opt/PostgreSQL/9.0/data/pg_hba.conf文件
如果软件安装完毕,我们也可以在Linux的开始菜单看到相关的信息
其实最简单的方法如下
![](http://img.my.csdn.net/uploads/201210/24/1351057010_3245.jpg)
【更多精彩资料参考】
PostgreSQL缓存详述 http://www.linuxidc.com/Linux/2013-07/87778.htm
Windows平台编译 PostgreSQL http://www.linuxidc.com/Linux/2013-05/85114.htm
Ubuntu下LAPP(Linux+Apache+PostgreSQL+PHP)环境的配置与安装 http://www.linuxidc.com/Linux/2013-04/83564.htm
Ubuntu上的phppgAdmin安装及配置 http://www.linuxidc.com/Linux/2011-08/40520.htm
CentOS平台下安装PostgreSQL9.3 http://www.linuxidc.com/Linux/2014-05/101723.htm
PostgreSQL配置Streaming Replication集群 http://www.linuxidc.com/Linux/2014-05/101724.htm
---------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
---------------------------------------------------------------------------------------------------
相关文章推荐
- Linux学习进阶路线图
- 工作中Linux常用命令
- Linux线程同步---互斥量
- linux多台服务器之间ssh连接无需密码
- linux下查看以某个字母开头都所有文件
- 菜鸟学ubuntu 之 系统安装
- linux更改 DNS 的一般方式
- CentOS 7 Nvidia 显卡驱动安装
- linux文件实时同步
- Linux下创建管理员权限用户
- linux环境下Markdown编辑器汇总
- linux dd命令
- Linux下autoTools工具集使用介绍
- Linux-grep命令整理
- Linux SendMail总结
- linux下端口号查看及top命令
- Linux 多线程环境下 进程线程终止函数小结
- How To Install Git on CentOS 7
- 专题一 Linux下多线程编程——使用Pthread线程库
- linux 释放内存缓冲