postgresql安裝及配置


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM