分类: LINUX
2009-12-09 14:08:21
因为PostgreSQL和FreeBSD系出同门,同是加州伯克利分校的学院派,postgresql最开始也就是在unix系统运行的,应该说freebsd+postgresql应该是最好的搭配吧。
不过因为需要,需要在linux下运行postgresql,正好尝试一下如下CentOS52下编译安装PostgreSQL8.4
一、安装前的准备
1、编译安装其他软件的所需的软件:
#yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
2、下载PostgreSQL8.4的源代码
下载地址:
选择一个服务器下载。如:#wget
二、编译并安装PostgreSQL8.4
#tar -zxf postgresql-8.4.0.tar.gz # 解压文件
#cd postgresql*
#./configure --prefix=/usr/local/pgsql --without-readline
#缺省时将自动使用 GNU Readline, (这样你可以方便地编辑和检索命令历史。)注意要--without-readline否则./configure失败,或者补全各种库,我尝试了一下失败,最后还是选择不安装
#make && make install
按照我的步骤,基本不会出错
三、配置Postgresql8.4
(1)创建PostgreSQL的用户,设定密码
#adduser postgres
#passwd postgres
(2)创建PostgreSQL的数据库目录,修改目录的权限属性
#mkdir /usr/local/pgsql/data
#chown -R postgres /usr/local/pgsql
(3)以postgres用户登陆
#su postgres
(4)初始化数据库集群
#/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
(5)修改配置文件
修改/usr/local/pgsql/data/postgresql.conf
找到#listen_addresses = ‘localhost’修改为 listen_addresses = ‘*’
修改/usr/local/pgsql/data/pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 password
(6)启动数据库服务
#su postgres
#/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data
退出postgres用户#exit
#ps aux | grep postgres 查看postgres是否真的启动
四、PostgreSQL数据库管理
1、创建root用户,方便执行命令
#/usr/local/pgsql/bin/psql -U postgres postgres
postgres=#create role root with superuser createdb createrole login; #创建root用户
postgres=#alter user root with password '123456'; #修改root用户密码
2、创建常用命令快捷方式
#ln -s /usr/local/pgsql/bin/psql /usr/sbin/psql
#ln -s /usr/local/pgsql/bin/createdb /usr/sbin/createdb
#ln -s /usr/local/pgsql/bin/createuser /usr/sbin/createuser
#ln -s /usr/local/pgsql/bin/pg_dump /usr/sbin/pg_dump
#ln -s /usr/local/pgsql/bin/pg_ctl /usr/sbin/pg_ctl
3、创建表空间
#mkdir -p /data/pgsql/data/test/indexspace
#mkdir -p /data/pgsql/data/test/tablespace
#chown -R postgres /datapgsql/data
#/usr/local/pgsql/bin/psql -U postgres postgres
postgres=#CREATE TABLESPACE test_is OWNER test LOCATION '/home/db/test/indexspace';
postgres=#CREATE TABLESPACE test_ts OWNER test LOCATION '/home/db/test/tablespace';
4、创建单个数据库用户
#/usr/local/pgsql/bin/psql -U postgres postgres
postgres=#create role test with createdb login;
postgres=#alter user test with password '123456';
5、创建数据库
#createdb -D test_ts -O test -E UTF8 -T template0 testdb
在freebsd下,不需要 -T template0 ,而在centos下必须有这个,否则无法指定数据库的编码。
-D 指定表空间,-O 指定用户,-E 指定编码 -T 指定模板
6、向数据库导入数据和备份数据库
#pg_dump -U postgres testdb > testdb.dmp #备份
#psql -U postgres testdb < testdb.dmp #还原