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
該帳戶預設的目錄在/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$ 想使用熟悉的終端機
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
桌面版
網頁版
sudo /usr/pgadmin4/bin/setup-web.sh
# 記得要開防火牆
sudo firewall-cmd --zone=public --add-service=http