Total Pageviews

Thursday, 5 December 2013

编译安装postgreSQL 9.3.1

apt-get remove postgresql (如果你之前用包管理器装过它,请先卸载)
userdel postgres
wget http://ftp.postgresql.org/pub/source/v9.3.1/postgresql-9.3.1.tar.gz
tar zxvf postgresql-9.3.1.tar.gz
cd postgresql-9.3.1
./configure --prefix=/usr/local/postgresql
make
make install
ln -s /usr/local/postgresql/bin/postgres /usr/local/bin/postgres
useradd -m -u 701 postgres
mkdir /usr/local/postgresql/data
cd /usr/local/postgresql
chown postgres:postgres data (更改data目录所有者与群组属性)

在postgres用户下的.bash_profile文件(或者/etc/profile)中添加如下内容,方便以后启动数据库和关闭数据库:
export PGDATA=/usr/local/postgresql/data
alias pgstart='pg_ctl -D $PGDATA start'
alias pgstop='pg_ctl kill INT `head -1 $PGDATA/postmaster.pid`'
export LD_LIBRARY_PATH="/usr/local/postgresql/lib"
export LANG=en_US.utf8

source /etc/profile

保存并退出用户登录,使之生效.
再次登入:
su - postgres

初始化数据库目录:
/data/pgsql/bin/initdb -D $PGDATA


启动数据库:
/data/pgsql/bin/pg_ctl -D $PGDATA start

这时命令行虽然没换行但实际上就已经可以执行psql命令行了:


psql
postgres# CREATE USER postgres WITH PASSWORD '888888866';
postgres# CREATE DATABASE pgsql;
postgres# GRANT ALL PRIVILEGES ON DATABASE pgsql to postgres;
postgres# ALTER USER postgres with PASSWORD '888888866';

停止数据库:
/data/pgsql/bin/pg_ctl -D $PGDATA stop


远程连接pgsql的配置:
修改两处配置文件,这两个文件均在postgresql安装目录下的data文件夹:
第一:
在pg_hba.conf 文件的最下方加上下面的这句:
host    all         all         0.0.0.0/0             md5

第二:
在 postgresql.conf文件中查找“listen_addresses ”字符串,然后修改为如下:
listen_addresses = '*'
重启postgres服务.


随机启动:
只要修改OS的配置文件/etc/rc.local文件即可,这是个软连接文件,新增一行数据库启动的命令即可:
# vim /etc/rc.local

su - postgres -c '/data/pgsql/bin/pg_ctl -D /data/pgsql/data -l /data/pgsql/data/postgres.log start'