系統(tǒng)版本:Ubuntu 16.04
一. 安裝:
sudo apt-get install postgresql- 安裝9.4或者其他低版本:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.4
二. 啟動
- 啟動服務:
sudo service postgresql start - 切換至postgres用戶:
sudo -su postgres - 進入控制臺:
psql
登錄成功
以上為一些基本的準備操作,其他命令可以參考: http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
三. 配置
- 輸入
ps -ef | grep postgres看一下進程信息可以發(fā)現postgres的service啟動命令是這樣的:postgres-service
也就是說當前postgres的數據庫文件是/var/lib/postgresql/9.5/main,配置文件是/etc/postgresql/9.5/main/postgresql.conf - 看一下config文件,還是很友好,比較容易理解
postgresql.conf
這里指定了一個hba_file也就是pg_hba.conf(host-based authentication)就是配置數據庫的訪問權限,默認只能localhost訪問 - 看一下hba.conf
pg_hba.conf
第一行local all postgres peer解釋為:連接本地postgres數據庫的時候只要系統(tǒng)切換到postgres用戶即可登陸,并且可以訪問任何數據庫;如果給peer改成trust(改完重啟服務),則可以實現linux所有本地用戶都可以用psql -U postgres來連接數據庫;md5就是需要密碼訪問psql -U xxx -W或PGPASSWORD=... psql -U ... -d ...; - 開放遠程訪問:
修改postgresql.conf,取消注釋或者加一行listen_addresses = '*'
修改pg_hba.conf,增加一行# TYPE DATABASE USER CIDR-ADDRESS METHOD host all all 0.0.0.0/0 md5
四. 運行多個實例
切換至postgres用戶并創(chuàng)建數據庫文件,就在默認庫隔壁來一個吧
sudo -su postgres
/usr/lib/postgresql/9.5/bin/pg_ctl init -D /var/lib/postgresql/9.5/main_2
這里有一些提示信息,先不管

pg_ctl init
在main_2目錄里默認給我們生成了pg_hba.conf和postgres.conf,查看一下postgres.conf發(fā)現沒指定端口和hba_path,可以copy之前的conf文件
/etc/postgresql/9.5/main/postgresql.conf到main_2目錄,修改:
data_directory = '/var/lib/postgresql/9.5/main_2'
hba_file = '/var/lib/postgresql/9.5/main_2/pg_hba.conf'
ident_file = '/var/lib/postgresql/9.5/main_2/pg_ident.conf'
external_pid_file = '/var/run/postgresql/9.5-main-2.pid'
#不能跟之前一個一樣
port = 5433
再啟動服務
/usr/lib/postgresql/9.5/bin/pg_ctl -D /var/lib/postgresql/9.5/main_2 -l /var/log/postgresql/pg_5433.log start

成功啟動兩個實例

登陸另一個實例
同理如果是從生產環(huán)境下直接下載下來的數據庫文件,解壓后也是同樣方式運行,修改pg_hba.conf和postgres.conf文件即可



