1、添加RPM
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
2、安装PostgreSQL 9.6
yum install postgresql96-server postgresql96-contrib postgresql96-devel
/安装内容/
postgresql96-server 数据库核心服务端
postgresql96-contrib 附加第三方扩展
postgresql96-devel C语言开发Header头文件和库
(最好将需要安装的内容在命令中写全,实测在CentOS 7之前的版本会出现少装的情况。)
3、验证PostgreSQL安装情况
rpm -aq| grep postgres
默认Postgresql数据库路径是 /var/lib/pgsql/9.6/data ,可以新建一个目录,假如是/mnt/myvdb
cd /mnt
sudo mkdir myvdb
sudo chown -R postgres:postgres myvdb
sudo chmod 700 myvdb
vi /usr/lib/systemd/system/postgresql-9.6.service
Environment=PGDATA=/mnt/ myvdb / 修改为自己的新的数据路径
4、初始化数据库
/usr/pgsql-9.6/bin/postgresql96-setup initdb
5、开启postgre服务
CentOS 7
systemctl start postgresql-9.6.service
阿里云CentOS 6.5
service postgresql-9.6 start
6、PostgreSQL开机启动
systemctl enable postgresql-9.6.service
7、修改用户密码
su - postgres
切换用户,执行后提示符会变为 ‘-bash-4.2$’
psql -U postgres
登录数据库,执行后提示符变为 ‘postgres=#’
ALTER USER postgres WITH PASSWORD 'admin';
设置postgres用户密码。此处注意分号,这是一个SQL语句,而不是Linux命令。若设置成功,则会返回
ALTER ROLE
\q
退出数据库连接
exit
退出数据库
8、打开防火墙
CentOS 7防火墙中内置了PostgreSQL服务,配置文件位置在
/usr/lib/firewalld/services/postgresql.xml,只需以服务方式将PostgreSQL服务开放即可。
firewall-cmd --add-service=postgresql --permanent 开放postgresql服务
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload 重载防火墙
阿里云CentOS 6.5
vi /etc/sysconfig/iptables
并添加以下行
-A INPUT -m state –state NEW -m tcp -p tcp –dport 5432 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
退出并保存文件。重启iptables服务:
service iptables restart
若是新申请的服务器,防火墙未开启,则开启防火墙
service iptables start
如果没有防火墙配置文件(本人在阿里云CentOS6.5上踩过坑),则
1)任意执行一条iptables的防火墙配置规则指令
iptables -P OUTPUT ACCEPT
2)对iptables配置进行保存
service iptables save
3)重启 iptables服务器
service iptables restart
防火墙iptables文档的配置参考
vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 5432 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
CentOS 7
firewall-cmd --zone=public --list-ports 查看开放端口
阿里云CentOS 6.5
/etc/init.d/iptables status
9、开启远程访问
vi /var/lib/pgsql/9.6/data/postgresql.conf
修改#listen_addresses = ‘localhost’ 为 listen_addresses=’*’
修改#port = 5432 为 port = 5432
‘*’也可以改为任何想要开放的服务器IP
10、信任远程连接
vi /var/lib/pgsql/9.6/data/pg_hba.conf
修改如下内容,信任指定服务器连接
这里我是用虚拟机做的测试,主机和虚拟机使用NAT上网方式,所以主机想要访问虚拟机只能通过虚拟机网关来访问,因此这里ip添加的是虚拟机的网关地址。当然实验性质可以随意一点,写192.168.133.0/24(整个网段)或者0.0.0.0/0(所有地址)都可以访问。如果是公司在阿里云上部署,则IP为公司IP,不是电脑上192.168.x.x,而是要打开百度/Google搜索IP返回的结果。例如:220.23.163.7,则可以写220.23.163.7/32。这样就只能公司内部去访问数据库了,安全性相对来说高一些。
10、重启postgre服务
CentOS 7
systemctl restart postgresql-9.6.service
阿里云CentOS 6.5
service postgresql-9.6 restart
11、查看运行状态
systemctl status postgresql-9.6.service
12、使用Navicat for PostgreSQL远程连接测试
至此,PostgreSQL安装完成。
参考资料:
centos6.5 安装postgresql9.4
Centos6.5/6.8 64位缺少防火墙配置文件及内部的相应配置
CentOS 7 安装PostgreSQL 9.6