PostgreSQL_13.1安裝步驟
自動安裝腳本下載:https://download.csdn.net/download/kinshy/14053240
#創建postgres用戶(數據庫初始化用到)
useradd postgres
#設置用戶密碼
passwd postgres
#創建pgsql目錄
mkdir /usr/local/pgsql
#用戶授權
chown -R postgres.postgres /usr/local/pgsql
# 創建數據庫文件夾
mkdir -p /data/postgresql_data
#授權postgres用戶data權限
chown -R postgres.postgres /data/postgresql_data/
#創建安裝目錄
mkdir /usr/local/pgsql
cd /usr/local/pgsql
#下載源碼包
wget https://ftp.postgresql.org/pub/source/v13.1/postgresql-13.1.tar.gz
#解壓到pgsql目錄
# 解壓
tar -zxvf postgresql-13.1.tar.gz
cd ~/postgresql-13.1
# 安裝必要依賴
yum install -y bison flex readline-devel zlib-devel
yum install docbook-dtds docbook-style-xsl fop libxslt -y
yum install -y gcc
readline 跳過方法:./configure --without -readline
# 配置編譯
./configure --prefix=/usr/local/pgsql/postgresql-13.1
# 編譯
make
make install
#必須切換到postgres用戶才能初始化
su postgres
# 初始化數據庫
/usr/local/pgsql/postgresql-13.1/bin/initdb -D /data/postgresql_data/
啟動數據庫
/usr/local/pgsql/postgresql-13.1/bin/pg_ctl -D /data/postgresql_data/ -l logfile start
停止數據庫
/usr/local/pgsql/postgresql-13.1/bin/pg_ctl -D /data/postgresql_data/ stop
重啟數據庫
/usr/local/pgsql/postgresql-13.1/bin/pg_ctl restart -D /data/postgresql_data/ -m fast
#修改配置
cd /data/postgresql_data/
cp postgresql.conf postgresql.conf.bak
vi postgresql.conf
#修改listen_addresses, #defaults to 'localhost'; use '*' for all。
listen_addresses = '*'
#連接數 增大一些,默認100連接數不夠用,如果做主從配置,從庫需要比主庫大,可將從庫設置為1100
max_connections = 1000
修改默認端口號(默認端口號5432)
port = 5433
#修改連接認證方式
vi /data/postgresql_data/pg_hba.conf
在文件底部,增加如下配置
host all all 0.0.0.0/0 md5
#注意:最后一個單詞不要用trust,建議用md5,原因如下:
#修改環境變量
vi ~/.bash_profile
增加配置
export PGHOME=/usr/local/pgsql/postgresql-13.1
export PGDATA=/data/postgresql_data
PATH=$PATH:$HOME/bin:$PGHOME/bin
export PATH
#刷新使配置生效
source ~/.bash_profile
#查看環境變量
echo $PATH
#設置開機自啟動(需要root用戶)
cd /usr/local/pgsql/postgresql-13.1/contrib/start-scripts
chmod a+x linux
cp linux /etc/init.d/postgresql
vi /etc/init.d/postgresql
#修改配置文件:三個地方PGUSER、prefix、PGDATA,如下
# PGUSER是一個非root用戶(這里的PGUSER是postgres)
PGUSER=postgres
prefix=/usr/local/pgsql/postgresql-13.1
PGDATA="/data/postgresql_data"
#開機自啟生效
chkconfig --add postgresql
chkconfig
#啟動服務
service postgresql start
ps -ef | grep postgres
#修改初始密碼
#盡量用強力密碼:大寫+特殊符號+小寫+數字
psql -U postgres -p 5433
ALTER USER postgres with encrypted password '你的密碼xxxx';
\q
權限控制
參考:https://github.com/digoal/blog/blob/master/201506/20150601_01.md
1. 權限管理
最危險的就是最容易暴露的數據庫用戶,當然是應用連接數據庫的賬號(以下簡稱應用賬號)。
應用賬號權限越大,應用程序被攻擊后破壞性就越大。
例如用戶有刪數據庫,刪表,刪索引,刪表空間,刪SCHEMA,刪函數等等這樣的權限的話,危害極大。
安全建議:
1.1 使用超級用戶創建數據庫(查看所有數據庫:\l)
CREATE DATABASE db_test;
1.2 切換數據庫(\c),並創建數據庫的SCHEMA(查看所有命名空間:\dn)
\c db_test;
CREATE SCHEMA db_schema;
1.3 創建dev開發賬號角色(查看所有用戶:\du)
CREATE USER dev;
1.4 修改dev用戶密碼
ALTER USER dev with encrypted password 'dev的密碼';
1.5 回收數據庫,schema,language,應用對象的public權限。
revoke all on schema db_schema from public;
revoke all on language plpgsql from public;
revoke all on database postgres from public;
revoke all on table ... from public;
revoke all on function ... from public;
......
1.6 將數據庫,schema的使用權限賦予給應用賬號。
grant usage on schema db_schema to dev;
grant connect on database db_test to dev;
1.7 將應用需要訪問的對象的相關權限賦予給應用賬號。
例如賦予dev用戶所有表的select,insert,update,delete權限:
GRANT select,insert,update,delete ON ALL TABLES IN SCHEMA public TO dev;
或者賦予dev用戶所有表的所有權限:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dev;
1.8 不要忘記序列(自增鍵)屬性授權:
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO dev;
這樣,應用賬號只有對象的使用權限,沒有對象的DROP,TRUNCATE,REPLACE權限,相對來說是更安全的。
為了安全起見,安裝完成后禁用掉postgres用戶ssh遠程登陸:
在/etc/ssh/sshd_config配置文件中設置DenyUsers選項,格式如下:
# 拒絕 postgres 帳戶通過 SSH 登錄系統
DenyUsers postgres
配置完成需要重啟SSHD服務
[root@dev ~]# service sshd restart
The End!
參考資料
-----------------------------------------------------------------------
#postgresql 主從集群安裝
https://www.cnblogs.com/x-j-p/p/13085588.html
#創建dev只讀用戶
參考:https://www.jianshu.com/p/2dc7b73da72c
#用戶管理指令
參考:https://blog.csdn.net/cui_yonghua/article/details/106073987
#postgresql.conf參數配置
參考:https://blog.csdn.net/weixin_43783011/article/details/108431561
PostgreSQL之autovacuum自動清理
參考:https://www.jianshu.com/p/9a34b9610012
PostgreSQL日常維護手冊
參考:https://www.kancloud.cn/zzgjb/pgsql/76192
————————————————
版權聲明:本文為CSDN博主「kinshy」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/kinshy/article/details/112134102
