PostgreSQL - HowardWhile/2021_note GitHub Wiki

PostgreSQL

[TOC]

版本確認

目前作業系統使用CentOS 7.6

[aim@localhost ~]$ cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

資料庫版本使用PostgreSQL 12

[aim@localhost ~]$ su - postgres 
Last login: Thu Nov 11 01:44:24 PST 2021 on :0
[postgres@localhost ~]$ postgres -V
postgres (PostgreSQL) 12.8

安裝

CentOS 7.6 下載位置

http://repos-va.psychz.net/centos/7.6.1810/isos/x86_64/

PostgreSQL 12

https://www.postgresql.org/download/linux/redhat/

# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
sudo yum install -y postgresql12-server

# 初始化 PostgreSQL 資料庫
sudo postgresql-12-setup initdb 
# 啟動 PostgreSQL 伺服器
sudo systemctl start postgresql-12
# 設定開機自動啟動 PostgreSQL 伺服器
sudo systemctl enable postgresql-12

此時會有postgres帳戶產生

cat /etc/passwd

image-20211112165708385

該帳戶預設的目錄在/var/lib/pgsql要有權限才能瀏覽得到例如:

su
# su - postgres # 或者這個使用者
cd /var/lib/pgsql

編輯配置檔postgresql.conf依據自己的需求修改 listen_addresses 屬性,指定要傾聽(listen)的網路介面,預設只有本地才能連線。

sudo gedit /var/lib/pgsql/12/data/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -
#listen_addresses = 'localhost'		# what IP address(es) to listen on;
					# comma-separated list of addresses;
					# defaults to 'localhost'; use '*' for all
					# (change requires restart)
listen_addresses = '*'

編輯配置檔 g_hba.conf ,在最後加入允許存取 PostgreSQL 資料庫的網段

sudo gedit /var/lib/pgsql/12/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust # 允許 127.0.0.1/32 的所有連線
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident

host    all             all             192.0.0.0/8         	trust # 允許 192.0.0.0/8 的所有連線

重新啟動 PostgreSQL 服務

sudo systemctl restart postgresql-12

開啟 CentOS Linux 系統的防火牆

# 將 postgresql 服務新增至 public 區域中
sudo firewall-cmd --zone=public --add-service=postgresql

# 永久將 postgresql 服務新增至 public 區域中
sudo firewall-cmd --zone=public --permanent --add-service=postgresql

https://blog.gtwang.org/linux/centos-linux-install-postgresql-database-tutorial/

xxx is not in the sudoers file

新增帳戶aim到sudoers的檔案中

su
gedit /etc/sudoers
##
## Allow root to run any commands anywhere 
root		ALL=(ALL) 	ALL 
aim			ALL=(ALL) 	ALL # 新增的內容

postgres的密碼怎麼設定

su 
passwd postgres

列出系統網路監聽的port

sudo lsof -i -P -n | grep LISTEN

我不喜歡-bash-4.2$ 想使用熟悉的終端機

image-20211112225932392

sudo cp /etc/skel/.bashrc /var/lib/pgsql
sudo cp /etc/skel/.bash_profile /var/lib/pgsql

Postgres 版本確認

su - postgres
psql -V

為什麼postgres指令不能用

例如 postgres -V

裝完PostgreSQL該指令的路徑在/usr/pgsql-12/bin/postgres

所以只要手動將之加入PATH即可

echo 'export PATH=$PATH:/usr/pgsql-12/bin/' >> ~/.bashrc

管理工具

pgAdmin 安裝

https://www.pgadmin.org/download/pgadmin-4-rpm/

sudo rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm
sudo yum install -y pgadmin4

桌面版

image-20211112235430710

網頁版

sudo /usr/pgadmin4/bin/setup-web.sh

# 記得要開防火牆
sudo firewall-cmd --zone=public --add-service=http

image-20211113001740067

Home