PostgreSQL14.2 安装过程全记录

PostgreSQL_14.2安装步骤

自动安装脚本下载:postgresql-14.2官网源码&_自动安装脚本.rar
 

#创建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/
chmod 777 /data

#创建安装目录
mkdir /usr/local/pgsql
cd /usr/local/pgsql

#下载源码包
wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.gz


#解压到pgsql目录
# 解压
tar -zxvf postgresql-14.2.tar.gz
cd ~/postgresql-14.2


# 安装必要依赖
yum install -y bison flex readline-devel zlib-devel
yum install docbook-dtds docbook-style-xsl fop libxslt -y
yum install -y gcc


# 配置编译
./configure --prefix=/usr/local/pgsql/postgresql-14.2
# 编译
make
make install


#必须切换到postgres用户才能初始化
su postgres
# 初始化数据库
/usr/local/pgsql/postgresql-14.2/bin/initdb -D /data/postgresql_data/


启动数据库
/usr/local/pgsql/postgresql-14.2/bin/pg_ctl -D /data/postgresql_data/ -l logfile start
停止数据库
/usr/local/pgsql/postgresql-14.2/bin/pg_ctl -D /data/postgresql_data/ stop
重启数据库
/usr/local/pgsql/postgresql-14.2/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               scram-sha-256

#注意:最后一个单词不要用trust,建议用scram-sha-256,原因如下:

#修改环境变量
vi ~/.bash_profile
增加配置
export PGHOME=/usr/local/pgsql/postgresql-14.2
export PGDATA=/data/postgresql_data
export PATH=$PATH:$PGHOME/bin


#刷新使配置生效
source ~/.bash_profile
#查看环境变量
echo $PATH


#设置开机自启动(需要root用户)
cd /usr/local/pgsql/postgresql-14.2/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-14.2
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


权限控制
参考:blog/20150601_01.md at master · digoal/blog · GitHub

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 主从集群安装
postgresql 主从集群安装 - 江流大海_浮萍如尘 - 博客园

#创建dev只读用户
参考:PostgreSQL创建只读用户 - 简书

#用户管理指令
参考:PostgreSQL:十三. PostgreSQL的用户管理_cui_yonghua的博客-CSDN博客

#postgresql.conf参数配置
参考:postgresql.conf参数配置_王翔:的博客-CSDN博客

PostgreSQL之autovacuum自动清理
参考:PostgreSQL之autovacuum - 简书

PostgreSQL日常维护手册
参考:PostgreSQL实用日常维护SQL · postgresql手册 · 看云

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值