说实在的,我的这个LAMP网站,其实是不能遗忘这头大象的。MySQL是一条轻快的小海豚,但是缺少很多现代关系数据库应有的特色,例如:引用完整性,视图,触发器等。因此,如果你需要开发一个电子商务的网站,需要这些功能的话,你或许应该考虑PostgreSQL了。本文将通过其在RedHat7.1上安装过程,简要介绍其用法。
PostgreSQL的官方下载地址为:
ftp://ftp.postgresql.org/pub/v7.1.3/postgresql-7.1.3.tar.gz
http://www.postgresql.org/
如果下载最新的开发版本,你需要下载并安装flex(版本号大于2.5.4)以及bison(版本号大于1.28)
设计人员为了安全考虑,PostgreSQL不能以root用户运行,所以必须建立对应的用户和组。
#useraddpostgre(自动建立postgre组)
安装的过程并不复杂和其他源码版本的安装方法类似:
解压到/usr/local/src:
#tarxvfzpostgresql-7.1.3.tar.gz
#cdpostgresql-7.1.3
#./configure--prefix=/usr/local/pgsql
#make
#makeinstall
#chown-Rpostgre.postgre/usr/local/pgsql
这样安装完毕后,并不是万事大吉了,还有一些收尾工作要做:
#vi~postgre/.bash_profile
添加:
PGLIB=/usr/local/pgsql/lib
PGDATA=$HOME/data
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
exportPGLIBPGDATAPATHMANPATH
以postgres用户登录,
#su-postgre
建立数据库目录:
$mkdirdata
启动数据库引擎:
$initdb
[postgre@wwwpostgre]$initdb
Thisdatabasesystemwillbeinitializedwithusername"postgre".
Thisuserwillownallthedatafilesandmustalsoowntheserverprocess.
Fixingpermissionsonpre-existingdatadirectory/home/postgre/data
Creatingdatabasesystemdirectory/home/postgre/data/base
CreatingdatabaseXLOGdirectory/home/postgre/data/pg_xlog
Creatingtemplatedatabasein/home/postgre/data/base/template1
Creatingglobalrelationsin/home/postgre/data/base
Addingtemplate1databasetopg_database
Creatingviewpg_user.
Creatingviewpg_rules.
Creatingviewpg_views.
Creatingviewpg_tables.
Creatingviewpg_indexes.
Loadingpg_description.
Vacuumingdatabase.
Success.Youcannowstartthedatabaseserverusing:
/usr/local/pgsql/bin/postmaster-D/home/postgre/data
or
/usr/local/pgsql/bin/pg_ctl-D/home/postgre/datastart
$postmaster-i-D~/data&
[1]22603
[postgre@wwwpostgre]$DEBUG:DataBaseSystemisstartingupatThuJan3102:00:442002
DEBUG:DataBaseSystemwasshutdownatThuJan3101:57:582002
DEBUG:DataBaseSystemisinproductionstateatThuJan3102:00:442002
这样PostgreSQL使用位于/usr/local/pgsql/data的数据库,允许Internet用户的连接(-i),并在后台运行。
建立数据库
$createdbmydb
PostgreSQL会返回CREATEDDATABASE的信息,表明数据库建立完成。
$psqlmydb
进入交互psql工具,建立表:
CREATETABLEmytable(
idvarchar(20),
namevarchar(30));
建立完成后,会得到一条CREATED的信息,表示建立成功。现在插入一条数据:
INSERTINTOmytablevalues('Author','XuYongjiu');
psql返回INSERT187321,查询插入是否成功:
SELECT*FROMMYTABLE;
退出psql,用\q命令