环境:Debian 8.0
用Debian的apt-get install安装后,不知道都安装到哪里去了,配置文件、执行文件、数据目录满天飞,到处找很麻烦,所以还是老老实实从源代码安装。
1. 在linux用adduser命令添加一个新用户,用户名可以为postgres
2. 编辑 /etc/sudoers,添加postgres用户,这样后续可以执行sudo命令
3. 用postgres用户登录
4. wget获取源代码,因为是https地址,所以wget加开关--no-check-certificate
wget --no-check-certificate https://ftp.postgresql.org/pub/source/v9.5.3/postgresql-9.5.3.tar.gz
下载到 /home/postgres/postgresql-9.5.3.tar.gz
5. 解压源文件
gunzip postgresql-9.5.3.tar.gz
tar xf postgresql-9.5.3.tar
解压完成后,形成源代码目录 postgresql-9.5.3
6. 进入源代码目录 /home/postgres/postgresql-9.5.3
7. configure
在源代码目录下执行
./configure
执行过程中,可能会报错,比如缺少readline库,缺少zlib库等,一般都是缺少开发库。
比如readline库,可通过 sudo apt-get install libreadline6-dev命令安装。zlib库,可以用命令 sudo apt-get install zlib1g.dev
基本原则是缺什么开发库,就装什么。
8. make
在源代码目录下执行 make world,这样连文档等都编译好
9. 编译检查
make check
10. 安装
sudo make install
sudo make install-docs
程序会安装到 /usr/local/pgsql下
11. 修改PATH环境变量,增加 /usr/local/pgsql/bin
可修改 /home/postgres/.bashrc 文件
12. 新建data目录。该目录用于存放数据库数据
mkdir /usr/local/pgsql/data
13. 改变/usr/local/pgsql/data目录的owner
sudo chown -R postgres /usr/local/pgsql/data
这样postgres有足够的权限执行该目录下的相关操作
14. 启动脚本准备。源代码目录下的contrib目录下有启动脚本,可以直接应用。
如有需要,可以修改这个启动脚本。修改处主要是一些文件和目录配置
cp /home/postgres/postgresql-9.5.3/contrib/start-scripts/linux /etc/init.d/postgresql
15. 添加开机启动和服务
update-rc.d postgresql defaults
(或者用 chkconfig --add postgresql。实际发现,在Debian下,还是update-rc.d管用)
16. 初始化数据库
initdb -D /usr/local/pgsql/data
会创建一个数据库postgres
17. 修改/usr/local/pgsql/data/pg_hba.conf文件,允许远程访问。下面第三行的格式,允许所有远程地址访问
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
18. 修改/usr/local/pgsql/data/postgresql.conf 文件,初步修改的地方有:
listen_addresses = '*' #允许监听所有来的地址。如果不带开,远程连接会被拒绝。报错就是 Connection refused
logging_collector = on #把logging打开
log_line_prefix = '%t' #把logging的时间戳打印出来
timezone='PRC' #把时区改为中国时区
log_timezone='PRC'
19. 启动数据库
/etc/init.d/postgresql start
或者service postgresql start
其他命令选项有 stop restart reload
20. 本地连接到数据库,修改数据库用户postgres的密码
psql
这样直接以当前linux用户身份,即postgres连接到本地数据库
psql#\l 命令查看数据库
psql#\du 命令查看用户
执行修改密码的sql命令:alter role postgres password 'newpassword';
21. 远程连接
远程用psql或者pgAdmin连接数据库
psql连接如下
psql -h your_db_server_ip -p 5432 -U postgres -d postgres -W
其中-W参数要求询问输入密码
至此,安装基本结束,数据库可用。
22. 为安全起见,修改 /etc/sudoers,去掉用户postgres的sudo权限。
23. 配置Stream Replication的过程,详细见以下链接中的"How to user"部分,里面的步骤经过测试没有问题。
https://wiki.postgresql.org/wiki/Streaming_Replication