1.安裝
1.1 選擇對應系統版本和數據庫版本
- 這里選擇的是centos7 postgresql-10版本
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Install PostgreSQL:
sudo yum install -y postgresql10-server
# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
sudo systemctl enable postgresql-10
sudo systemctl start postgresql-10
2.配置
2.1 查找配置文件位置
-
切換到root用戶給postgres設置密碼,並切換到postgres用戶
su passwd postgres su postgres -
進入postgresql控制台
# 如果使用默認值,可以直接輸入psql就能進入了 psql -U postgres -h 127.0.0.1 -p 5432 -d postgres -
也可以在這里修改密碼
ALTER USER postgres WITH PASSWORD 'postgres'; -
關於自建用戶操作權限問題,可以參考碼農家園
-
查找配置文件所在位置
select name,setting from pg_settings where category='File Locations';

-
退出控制台,進入配置文件所在文件夾
# 退出控制台 \q # 進入配置文件所在文件夾 cd /var/lib/pgsql/10/data/ # 查看文件下的配置文件 ls

2.2 postgresql.conf文件配置
-
使用vim打開此配置文件,在59行將地址改為'*'代表允許任何地址訪問
-
port可以修改為其他端口,也可以使用默認值(修改完之后連接數據庫端口就不能使用缺省值了)
- 方法1:psql -p 5436 (后面加上-p 新端口連接)
- 方法2:改變端口缺省值,在用戶家目錄下的.bashrc文件最后寫入export PGPORT=新端口,source ~/.bashrc

2.3 pg_hba.conf 文件配置
TYPE 主機類型
1.local unix-domain socket 僅匹配localhost
2.host TCP/IP socket
3.hostssl ssl加密的TCP/IP socket
DATABASE 數據庫名稱
1.all 所有數據庫,不匹配replication
2.replication
3.數據庫名稱 可以用多個逗號隔開,寫多個數據庫,也可以將多個數據庫寫入一個文件中,
用@前綴加文件名稱讀取文件內容
USER 用戶名
1.all 所有用戶名
2.用戶名 多個用戶時配置通數據庫名稱
ADDRESS 訪問ip
1.ip/num的形式
2.num可選擇0~32的數字,代表匹配的位數,ipv4是由32位二進制組成
例:
0.0.0.0/0 匹配任意主機地址
192.0.0.0/8 匹配以192開頭的主機地址
192.168.0.0/16 匹配以192.168開頭的主機地址
192.168.1.0/24 匹配以192.168.1開頭的主機地址
192.168.1.1/32 匹配以192.168.1.1主機地址
METHOD 驗證方式
1.peer 服務器和客戶端在同一環境下免密碼登錄
2.ident 和peer類似,不需要服務器客戶端在同一環境下,需要pg_iden.conf文件配置
3.password 明文密碼認證
4.md5 采用md5加密的密碼認證
5.trust 完全信任,忽略驗證

2.4 重新加載配置文件(以下任意一種都可)
# 1. 用超級用戶運行,進入psql控制台
SELECT pg_reload_conf();
# 2. 用UNIX的kill手動發起HUP信號
kill -HUP PID
2.5 開啟postgresql服務
- 請注意,配置完文件之后,重啟服務或重新加載配置文件生效
# 開啟
systemctl start postgresql-10
# 重啟
systemctl restart postgresql-10
# 關閉
systemctl stop postgresql-10
2.6 centos7防火牆設置(別忘了防火牆開啟端口--)
# 1.查看已開啟的端口
firewall-cmd --zone=public --list-ports
# 2.開啟防火牆端口 --zone=public 代表公共端口 tcp代表此端口為tcp連接 --permanent 永久開啟
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 3.關閉防火牆端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 4.重新加載防火牆規則 每次更改防火牆后,需要重新加載或者重啟防火牆
firewall-cmd --reload
# 5.查看某端口狀態
firewall-cmd --zone=public --query-port=80/tcp
# 6.查看防火牆狀態
systemctl status firewalld
# 7.開啟防火牆
systemctl start firewalld
# 8.關閉防火牆
systemctl stop firewalld
# 9.重啟防火牆
systemctl restart firewalld
# 10.永久開啟防火牆
systemctl enable firewalld
# 11.永久關閉防火牆
systemctl disable firewalld
3.數據庫操作
3.1 創建數據庫
# 1.切換到postgres用戶,進入控制台
su postgres
psql
# 2.創建用戶
create user test_user; # 創建用戶
ALTER USER test_user WITH SUPERUSER; # 將用戶作為超級用戶(視情況而定)
# 3.創建數據庫,可以指定數據庫所屬用戶
create database test_db with owner test_user;
# 4.將數據庫權限賦予用戶
grant all privileges on database test_db to test_user;
3.2 刪除數據庫
drop database test_db;
3.3 修改數據庫名
alter database test_db rename to abc;
3.3 數據庫導出
pg_dump -d test_db > test_db.sql
3.4 數據庫導入
psql -d test_db < test_db.sql
4.其他配置
4.1 關閉數據庫連接
- 刪除數據庫的時候,有其他連接存在,先關閉連接
select pg_terminate_backend(pid) from (select pid from pg_stat_activity where datname = 'test_db' ) a;
4.2 免輸入密碼
4.2.1 設置環境變量(方法1)
export PGPASSWORD=skytf
4.2.2 設置 .pgpass 密碼文件(方法2)
vi /home/postgres/.pgpass
--格式
hostname:port:database:username:password
--范例
192.168.1.1:5432:test_db:test_user:woshimima
4.3.3 修改服務端 pg_hba.conf(方法3)
# 前面介紹過,在相應的位置加入此行
host test_db test_user 192.168.1.1/32 trust
