准备工作
创建用户
#创建用户和组
groupadd postgres
useradd -g postgres postgres
准备安装目录
如果进行过仓库安装的话,要记得通过(yum remove 或者 apt-get remove)移除。
#进入安装目录
cd /usr/local/
#删除原有安装(如果有的话)
rm -rf postgres*
下载源码
从PostgreSQL官方下载自己想要的版本的源代码。这边我以9.6.1为例。
#获取压缩包
wget https://ftp.postgresql.org/pub/source/v9.6.1/postgresql-9.6.1.tar.gz
#解压
tar zxvf postgresql-9.6.1.tar.gz
编译启动
安装
#配置
cd postgresql-9.6.1
./configure --prefix=/usr/local/postgresql --without-readline
#编译安装
make && make install
#安装contrib目录下的一些工具,是第三方组织的一些工具代码,建议安装
cd contrib
make && make install
创建数据目录
#建postgres数据库的目录
mkdir -p /var/postgresql/data
chown postgres:postgres /var/postgresql -R
chown postgres:postgres /usr/local/postgresql -R
添加环境变量
#切换用户
su - postgres
在~/.bash_profile的最后添加如下内容
export PGHOME=/usr/local/postgresql
export PGDATA=/var/postgresql/data
export PATH=$PGHOME/bin:$PATH
export MANPATH=$PGHOME/share/man:$MANPATH
export LANG=en_US.utf8
export DATE=`date +"%Y-%m-%d %H:%M:%S"`
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
alias rm='rm -i'
alias ll='ls -lh'
#alias pg_start='pg_ctl start -D $PGDATA'
#alias pg_stop='pg_ctl stop -D $PGDATA -m fast'
#初始化数据库
initdb -D /var/postgresql/data
#启动服务
pg_ctl -D /var/postgresql/data -l /var/postgresql/logfile start
测试
#登录客户端使用"psql 数据库名"登录数据库。
#缺省数据库名时,连接到默认的数据库postgres。
#本地不用指定数据库
psql
#创建测试数据库
create database test;
#切换到test 数据库
\c test
#创建测试表
create table test (id integer, name text);
#插入测试数据
insert into test values (1,'david');
#选择数据
select * from test ;
其它配置
修改linux 系统用户postgres 的密码
passwd postgres
修改PostgresSQL 数据库配置实现远程访问
#修改postgresql.conf 文件
vi /var/postgresql/data/postgresql.conf
#--------------------允许远程连接---------------------------
#修改客户端认证配置文件pg_hba.conf,将需要远程访问数据库的IP地址或地址段加入该文件
vi /var/postgresql/data/pg_hba.conf
#在文件的最下方加上下面的这句话(出于安全考虑,不建议这样配置)
host all all 0.0.0.0/0 trust
#设置监听整个网络,查找“listen_addresses ”字符串,
vi /var/postgresql/data/postgresql.conf
#修改为如下:
listen_addresses = '*'
查看端口
#重启服务
pg_ctl -D /var/postgresql/data -l /var/postgresql/logfile restart
#停止服务
pg_ctl -D /var/postgresql/data -l /var/postgresql/logfile stop
#端口是否启用
netstat -anp | grep 5432