背景
简单啰嗦一下背景,想看解决方案的,直接跳过本章节。
最近在预研postgresql的功能,其中有个场景就是需要在系统中ssh到postgresql集群上执行psql
命令。但是我只有容器版的postgresql,并不能直接ssh到容器中。而ssh到我自己的主机上,由于没有安装postgresql,不能执行psql
命令。
我想到了以下两个解决方案:
- 直接配置容器IP,ssh到容器内,这样就可以执行
psql
命令,但是检索了相关操作后,发现很繁琐,还要修改主机配置。可能会影响主机的其他应用,于是放弃了。 - 在我自己的主机上部署postgresql。检索了相关教程后,发现需要新建用户,而我本身的账号没有主机上新建用户权限;且官网没有提供安装包,只提供了
yum
方式安装,而主机yum
源受限,无法使用外网yum
源安装。一番检索后,发现了可以源码安装,但是程序繁琐,放弃了。
以上两个方案,供大家参考,如果下面的方案不可行,以上两个方案希望可以提供一些借鉴。
简单步骤
不想看我啰嗦的,直接看这个简单步骤。
- 第一步 选择适配版本的安装包
进入下载地址,根据自己的操作系统版本选择安装包
https://yum.postgresql.org/11/redhat/rhel-7-x86_64/repoview/index.html
-
第二步 下载客户端安装包
下载postgresql
和postgresql-libs
安装包
-
第三步 安装客户端
将安装包上传至主机,然后执行安装命令。
rpm -i postgresql11-libs-11.2-1PGDG.rhel7.x86_64.rpm
rpm -i postgresql11-11.2-1PGDG.rhel7.x86_64.rpm
-
第四步 验证结果
执行psql
命令,未报命令不存在异常,则说明安装成功。
解决方案
下面详细介绍我的解决方案。
下载安装包
其实这个解决方案,实在官网上找到的,在寻找源码安装部署的时候,发现安装包被拆分成了不同的小包,以应对不同的使用场合。
下载地址:
https://yum.postgresql.org/11/redhat/rhel-7-x86_64/repoview/index.html
这个是红帽子Linux,CentOS-7的安装地址,其他操作系统,请回退上级目录选择。
进去之后,我们选择上面的postgresql database server
进来后,可以看到里面有4个安装包
postgresql11 - PostgreSQL 客户端程序和依赖包
postgresql11-contrib - PostgreSQL 发布的源代码和二进制文件
postgresql11-libs - PostgreSQL 客户端依赖的公共包
postgresql11-server - PostgreSQL 的服务端程序代码
看到这里,我想大家都明白要干什么了。。
安装客户端
是的,我们只需要安装客户端即可。进入postgresql11
中查看介绍,可以知道,我们的想法是正确的。
If you want to manipulate a PostgreSQL database on a local or remote PostgreSQL
server, you need this package. You also need to install this package
if you’re installing the postgresql11-server package.
如果你想要操作本地或者远程的PostgreSQL
数据库服务,那么你需要这个包。如果你在安装服务端程序,那么这个包也是必须要安装的。
查看一下postgresql11-libs
介绍,可以知道,libs是通用包,所有程序都需要安装。
结合以上,我们下载好postgresql11
,postgresql11-libs
两个包,然后上传至主机上相关目录。
使用rpm
命令安。命令格式如下:
rpm -i postgresql11-libs-11.2-1PGDG.rhel7.x86_64.rpm
rpm -i postgresql11-11.2-1PGDG.rhel7.x86_64.rpm
安装过程会报告警:
warning: postgresql11-11.2-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
可忽略。
注意:需要先安装libs,再安装客户端,否则会报出异常提示。
安装好了之后,执行psql
命令,提示异常,但没有报出命令不存在,则说明安装成果,恭喜你,可以使用psql命令连接远程postgresql数据库了。