CentOS6.5 源码编译安装PostgreSQL9.4.4

[平台环境]

CentOS6.5 i686 、postgresql-9.4.4.tar.bz2源码包

 

一、创建postgres用户、用户组,数据库Data目录

# groupadd -g 501 postgres
# useradd -u 501 -g postgres -m -d /home/postgres postgres
# passwd postgres

# mkdir -p /db_data/pgdata
# chown -R postgres:postgres /db_data/pgdata

 

 

二、修改/home/postgres主目录下的.bashrc环境变量

[postgres@inspB ~]$ vi .bashrc
export PGPORT=5432
export PGHOME=/usr/local/pgsql         #postgresql源码编译的安装目录
export PGDATA=/db_data/pgdata          #存放postgresql数据库的Data目录
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export MANPATH=$PGHOME/share/man:$MANPATH
export LANG=en_US.utf8
export DATE=`date +"%Y-%m-%d %H:%M:%S"`

alias pg_start='pg_ctl -D $PGDATA start'
alias pg_stop='pg_ctl -D $PGDATA stop -m fast'
alias pg_restart='pg_ctl -D $PGDATA restart'
alias pg_status='pg_ctl -D $PGDATA status'
alias pg_reload='pg_ctl -D $PGDATA reload'

 

 

三、安装需要的依赖包

# yum install -y apr-devel apr-util bison bzip2 bzip2-devel clang cmake coreutils curl-devel dstat e4fsprogs epel-release flex gcc gcc-c++ glib2 jadetex krb5-devel.x86_64 libaio libcurl-devel.x86_64 libevent-devel libicu-devel libtool libuuid-devel libxml2 libxml2-devel libxslt-devel libyaml-devel llvm5.0 llvm5.0-devel llvm* lrzsz make mpstat net-tools.x86_64 ntp openjade openldap-devel openssl openssl-devel pam pam-devel perl-devel perl-ExtUtils-Embed python-devel python-psutil readline-devel sigar smartmontools sysstat systemd-devel tcl-devel xfsprogs vim-common.x86_64 vim-enhanced.x86_64 zlib-devel

 

四、解压、编译安装

# cp postgresql-9.4.4.tar.bz2 /tmp
# cd tmp
# tar -jxvf postgresql-9.4.4.tar.bz2
# cd postgresql-9.4.4

# 编译选项
# ./configure --prefix=/usr/local/pgsql9.4.4 --with-pgport=5432  --with-perl --with-python --with-openssl --with-pam --with-ldap --with-libxml --with-libxslt --enable-thread-safety

# 开始编译
# gmake world 
# 推荐用gmake,其中world表示编译所有可以编译的,包括 文档(HTML和手册页),附加模块 (contrib)
# 编译成功之后,显示如下: 
PostgreSQL, contrib, and documentation successfully made. Ready to install.

# 开始安装
# gmake install-world
# 安装成功之后,显示如下:
PostgreSQL, contrib, and documentation installation complete.

 

    这一步完成之后,会安装到/usr/local/pgsql9.4.4目录下。 进一步更改/usr/local/pgsql9.4.4目录属主:

# chown -R postgres:postgres /usr/local/pgsql9.4.4

    创建软链接,使pgsql目录指向pgsql9.4.4:

# ln -s /usr/local/pgsql9.4.4 /usr/local/pgsql
# chown -R postgres:postgres pgsql

 

 

五、初始化数据库

[root@inspB local]# su - postgres
[postgres@inspB ~]$ initdb -D /db_data/pgdata -E UTF8 --locale=C -U postgres -W

     初始化成功后,显示如下信息

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "C".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /db_data/pgdata ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
creating template1 database in /db_data/pgdata/base/1 ... ok
initializing pg_authid ... ok
Enter new superuser password: 
Enter it again: 
setting password ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating collations ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
loading PL/pgSQL server-side language ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    postgres -D /db_data/pgdata
or
    pg_ctl -D /db_data/pgdata -l logfile start

 

 

六、放开防火墙对端口5432的限制

# cd /etc/sysconfig
# echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT" >> iptables
# 注意:上面这一行内容,要放在COMMIT那一行的上面
# service iptables restart

 

 

七、启停数据库

(1)启动

#方式1:
$ cd /usr/local/pgsql/bin
$ ./postgres -D $PGDATA

#方式2:
$ mkdir -p /home/postgres/log
$ cd /usr/local/pgsql/bin
$ ./postgres -D $PGDATA > /home/postgres/log/pg_server.log 2>&1 &

#方式3:或者将启动信息写入日志,如下
$ mkdir -p /home/postgres/log
$ cd /usr/local/pgsql/bin
$ ./pg_ctl -D $PGDATA -l /home/postgres/log/pg_server.log start

#方式4:如果设置了环境变量export PGDATA=/db_data/pgdata,则下列方式最简单
$ cd /usr/local/pgsql/bin
$ ./pg_ctl start

#方式5:
$ cd /usr/local/pgsql/bin
$ ./postmaster -D $PGDATA

    如果要系统开机自动启动postgres,则在/etc/rc.d/rc.local文件中添加下列命令

/usr/local/pgsql/bin/pg_ctl -D $PGDATA -l /home/postgres/log/pg_server.log start

=>推荐用这条命令启动数据库

 

(2)停止

 

#方式1:最简单的方法
$ pg_ctl -D $PGDATA stop

#方式2:最直接的方法
kill postgres 进程

 

注意:postgres服务启动后,可能远程客户端无法连接数据库,因为pg_hba.conf和postgresql.conf文件没有放开限制,需要进一步配置、重启服务。

postgresql.conf文件修改如下内容:

listen_addresses = '*'                  # what IP address(es) to listen on;

pg_hba.conf文件增加如下内容:

host    all             all             0/0                     md5

 

最后,为了使用postgres管理用户远程登录数据库,需要修改一下postgres用户密码:

$ psql -d postgres
postgres=# alter user postgres with encrypted password 'YourPassword';

 

psql调用sql脚本命令:

psql -d <db_name> -a -f exec.sql -L exec.log

-a表示:echo all input from script

 

转载于:https://my.oschina.net/goopand/blog/343953

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值