Linux安装PostgreSQL设置远程访问(在线+离线)

安装postgresql12
  1. 在线
# 在线安装 RPM包
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装客户端软件包
yum install postgresql12

# 安装服务器软件包
yum install postgresql12-server

# 检查版本
psql --version
  1. 离线

基础准备:一台可以联网的CentOS7 可以正常运行的机器

# 设置yum 软件源
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 创建一个文件夹,把下载下来的rpm文件直接下载到这个文件夹下
mkdir pg12_rpm_packs

# 下载pg server/client,contrib和其依赖的其他包
yum install --downloadonly --downloaddir=./pg12_rpm_packs postgresql12-server postgresql12 postgresql12-contrib

将下载的文件复制到离线服务器上,有以下几个文件:

  • postgresql12-libs-12.4-1PGDG.rhel7.x86_64.rpm
  • postgresql12-12.4-1PGDG.rhel7.x86_64.rpm
  • postgresql12-server-12.4-1PGDG.rhel7.x86_64.rpm
  • postgresql12-contrib-12.4-1PGDG.rhel7.x86_64.rpm

在离线服务器上执行安装命令:

注意一定要按照顺序从上往下执行,否则安装失败

rpm -ivh postgresql12-libs-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force
rpm -ivh postgresql12-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force
rpm -ivh postgresql12-server-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force
rpm -ivh postgresql12-contrib-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force

验证是否成功:

rpm -aq | grep postgres
初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb
使用自己的数据目录
# 新建数据目录
mkdir -p /data/postgresql/data

# 授权
chown -R postgres:postgres /data/postgresql/data

# 切换到postgres用户,初始化
$ su - postgres
-bash-4.2$ /usr/pgsql-12/bin/initdb -D /data/postgresql/data

# 修改postgresql的system.service文件
vim /usr/lib/systemd/system/postgresql-12.service
Environment=PGDATA=/data/postgresql/data/

# 重新加载系统服务
systemctl daemon-reload
启动
# 设置开机自启动
systemctl enable postgresql-12

# 启动
systemctl start postgresql-12

# 查看状态
systemctl status postgresql-12

postgresql会自动完成以下操作:

  • 自动生成一个linux系统用户postgres:管理数据库的系统用户

  • 数据库用户postgres:数据库超级管理员

  • 此用户的默认数据库为postgres

修改下默认postgres数据库用户的密码:

$ su - postgres    
-bash-4.2$ psql 
psql (12.3)
Type "help" for help.

postgres=# alter role postgres with password 'postgres';
ALTER ROLE
创建新用户

修改的时候需要使用命令 su - postgres 进入 postgres 用户环境

# 建立新的数据库用户
create user durant with password '123456';

# 为新用户建立数据库
create database testdb owner durant;

# 把新建的数据库权限赋予新用户
grant all privileges on database testdb to durant;
开启远程访问

进入目录:cd data/postgresql/data(具体目录可以通过 systemctl status postgresql-12 命令查看)
在这里插入图片描述
修改 postgresql.conf 文件:将 listen_addresses = ‘localhsot’ 修改为 listen_addresses = ‘*’
修改前
修改后

信任远程连接

进入目录:cd data/postgresql/data(具体目录可以通过 systemctl status postgresql-12 命令查看)

修改 pg_hba.conf 文件:在如图位置新增一条记录,将要连接的IP添加进来

hostallall0.0.0.0/0password

认证方式

  • trust:凡是能连接到服务器的,都是可信任的。只需要提供数据库用户名,可以没有对应的操作系统同名用户;
  • md5:password 和 md5:对于外部访问,需要提供 psql 用户名和密码。对于本地连接,提供 psql 用户名密码之外,还需要有操作系统访问权(用操作系统同名用户验证)。password 和 md5 的区别就是外部访问时传输的密码是否用 md5 加密;
  • ident:对于外部访问,从 ident 服务器获得客户端操作系统用户名,然后把操作系统作为数据库用户名进行登录;对于本地连接,实际上使用了peer;
  • peer:通过客户端操作系统内核来获取当前系统登录的用户名,并作为psql用户名进行登录。
    在这里插入图片描述
重启服务
systemctl restart postgresql-12

重启完后通过命令 netstat -anp 查看服务如下所示,如果是127.0.0.1说明远程访问未开启,如果是0.0.0.0说明开启成功:
在这里插入图片描述

开放端口
  1. 云服务-配置云服务器安全组:开通5432端口
  2. 本地服务器:
firewall-cmd --zone=public --add-port=5432/tcp --permanent   # 开放5432端口
firewall-cmd --zone=public --list-ports		#查看防火墙所有开放的端口
服务器上验证数据库连接
[root@localhost ~]# psql -Upostgres -d postgres -h 192.168.0.125 -p 5432
navicat连接

navicat连接
密码跟用户名默认是一样的

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值