欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 在无法联网的Linux主机或者容器内远程连接主机部署或者容器版的postgresql数据库

在无法联网的Linux主机或者容器内远程连接主机部署或者容器版的postgresql数据库

2025/9/27 16:51:00 来源:https://blog.csdn.net/schwein_van/article/details/145207412  浏览:    关键词:在无法联网的Linux主机或者容器内远程连接主机部署或者容器版的postgresql数据库

最近做的项目遇到一个问题,需要在Linux主机或者容器内(内网环境,无法联网下载postgresql资源),访问远程环境上主机或者容器部署的postgresql数据库,进行数据库数据备份和恢复。
我们知道,直接在部署了postgresql数据库的主机或者容器内,通过psql -U dbuser -d database就可以连接pg数据库,也可以直接使用pg_dump命令对数据库进行备份,以及其他数据库操作。但是在远程环境(未部署postgresql)使用psql、pg_dump命令则会报错:command not found。
下面介绍的方法是这几天为了解决这个问题找到最简单的方法,如果大家什么更好的方法欢迎评论区一起交流!

检查Linux和postgresql数据库版本

查看需要远程访问数据库的Linux主机版本:

cat /etc/system-release

在这里插入图片描述
在部署了postgresql的主机或者容器内连接数据库并查看版本号:

psql -U antdb -d postgres
select version();

在这里插入图片描述

下载rpm包

因为没办法联网下载安装,通过手工下载rpm包的方式来安装。
Postgresql-13 redhat Linux CentOS-8 x86的安装包地址:
https://download.postgresql.org/pub/repos/yum/13/redhat/rhel-8-x86_64/
在这里插入图片描述
不需要选太新的版本,避免和当前使用的版本不兼容。
我下载的是这个rpm包:postgresql13-13.3-1PGDG.rhel8.x86_64.rpm

按需安装

解压rpm包postgresql13-13.3-1PGDG.rhel8.x86_64.rpm:

rpm2cpio postgresql13-13.3-1PGDG.rhel8.x86_64.rpm | cpio -idmv

得到一个usr目录,拷贝其中的可执行文件psql和pg_dump到无法联网的Linux主机或者容器的/usr/local/bin目录:

cp usr/psql-13/bin/psql /usr/local/bin/

在这里插入图片描述

试一下连接:
在这里插入图片描述
成功!
也可以通过下面命令远程连接数据库:

psql -U dbuser -d database -h ipaddr -p port

在这里插入图片描述
没问题哒!
试一下远程备份数据库:

pg_dump -U [用户名] -d [数据库名称] -t “[表名]” -f [备份文件名].dmp -h [ip] -p [port]

在这里插入图片描述
成功啦!

同理,Postgresql-13 redhat Linux CentOS-8 arm的安装包地址:
https://download.postgresql.org/pub/repos/yum/13/redhat/rhel-8-aarch64/
在这里插入图片描述

远程访问数据库免输密码

若数据库服务端的pg_hba.conf配置文件认证方式为”md5”或者”password”
在这里插入图片描述
则客户端连接数据库或者备份/恢复操作均需手动输入数据库密码:
在这里插入图片描述

访问数据库可以不输入密码进行操作的方法:

  1. 通过配置pg_hba.conf文件实现
    增加一行:host all all 127.0.0.1/32 trust, 127.0.0.1替换成自己备份服务器的ip即可(trust认证方式表示无条件地允许联接,这个方法允许任何可以与PostgreSQL数据库联接的用户以他们期望的任意PostgreSQL数据库用户身份进行联接,而不需要口令)
  2. 配置~/.pgpass
    在~/目录下创建.pgpass文件并确保文件权限正确chmod 600 ~/.pgpass,按照host:port:dbname:username:password格式输入数据库所在服务器ip,端口号,数据库名称,用户名,密码。可以多行配置多个数据库连接信息(前提是该备份服务器ip已经按照1中的配置文件配置了允许访问数据库,认证方式为md5或者password)
  3. 使用环境变量
    在执行pg_dump命令之前,可以通过设置环境变量PGPASSWORD来提供密码:
    export PGPASSWORD=“your_password”
    pg_dump -U username -d database -h host -p port -f backup.dmp

1和2均需要修改pg_hba.conf配置文件,实际操作比较繁琐。
我们采用第3种通过在主机或者容器中设置环境变量的方法设置数据库密码,如下图所示:
在这里插入图片描述

到这里,我就可以在无法连接外网的Linux主机或者容器内部,无需输入数据库密码就可以远程连接postgresql数据库并且进行备份恢复操作了!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词