PostgreSQL_13.1安装步骤


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM