pgadmin4介绍
如果您是一名专注于 Postgres 的 DBA,PgAdmin 是一个绝佳选择。也就是说,对分布式服务器的需求通常只出现在能够处理这种配置的熟练开发人员身上。
pgAdmin 通常被新手和经验丰富的 DBA 和开发人员用于数据库管理。
PgAdmin 有很好的社区支持,如果您遇到问题,有很多资源可以帮助您。通常,pgAdmin 在很大程度上满足了许多开发人员的需求,因此,大多数开发人员不会寻找其他 GUI 工具。这就是为什么 pgAdmin 仍然是一个非常流行、功能强大并且开源的 PostgreSQL 管理与开发平台,也可以说是最流行的 GUI 工具。pgAdmin 支持所有 PostgreSQL 操作和功能,同时是免费和开源的。
以下是 PostgreSQL 用户喜欢 pgAdmin 的一些主要原因:
-
创建、查看和编辑所有常见的 PostgreSQL 对象,甚至包括外部表
-
具有语法突出显示的图形查询计划工具。
-
仪表板可让您监控服务器活动,例如数据库锁定、连接的会话和准备好的事务,虽然这个只是一个简单的监控,但这里的简单是相对于专业的运维开发人士来说的,毕竟专业的监控还是得使用类似Prometheus这样得专业软件
-
由于 pgAdmin 是一个 Web 应用程序,您可以将其部署在任何服务器上并远程访问它。
-
pgAdmin UI 由可拆卸的面板组成,您可以根据自己的喜好进行排列。
-
过程语言调试器可帮助您调试代码。
-
pgAdmin 有一个便携式版本,您可以使用它轻松地在机器之间移动数据。
pgAdmin4 是 PostgreSQL 最常用的 GUI 工具,也是唯一的原生 PostgreSQL GUI 工具,官方也是十分推荐使用此工具来进行数据库管理工作的。由于它专门用于 PostgreSQL,您可以期待它使用每个版本的最新功能进行更新(专业的事情理应交给专业的人并使用专业的工具)。 pgAdmin4 可以从官方网站下载。
pgAdmin 支持 Linux、Unix、Mac OS X 以及 Windows 操作系统,可以管理 PostgreSQL 9.2 以及更高版本。
为什么要使用图形化数据库开发界面:
-
快捷键让新用户更容易使用,也更容易学习,也就是对于数据库新手来说,友好度很高
-
提供出色的可视化来帮助您解释数据。
-
您可以远程访问和导航另一个数据库服务器。
-
基于窗口的界面使管理 PostgreSQL 数据变得更加容易。
-
更轻松地访问文件、功能和操作系统。
因此,归根结底,GUI 工具让 PostgreSQL 开发人员的生活更轻松
pgadmin4的前身是pgadmin3,主要分为桌面版本和web版本这两个,pgadmin4的部署方式主要是rpm/apt二进制方式或者pip以及docker方式,上面也提到了基本支持所有的操作系统
桌面版本一般是Windows下使用,傻瓜式安装,下一步就可以了,无需安装postgresql数据库
web版本架构方面主要是采用了flask这个python框架,编写的语言主要是python,目前来说,高版本的pgadmin4运行环境基本只支持python3.6及以上版本了,web版本自然一般是用在Linux和mac这样的操作系统内
在查资料的过程中,有的人提出pgadmin4是基于django,这个我怀疑可能是比较老的版本吧,反正目前来说,基本上是只看到了flask这一个python框架
web版本主要是基于四个组件一个是node或者是httpd,一个是postgresql-libs,也就是postgreslq的运行库,一个是flask框架,一个是sqllite这样的小型关系数据库
本文将就在centos7和Euler2.0sp5如何rpm快速安装做一个介绍,并对docker的build镜像做一个简单的介绍
一,
dockers build 镜像方式部署pgadmin4
在源码包内有详细的docker用的Dockerfile,但该文件使用的是国外的网址,需要做国内适配
国内适配难度比较大的,但观察此dockerfile文件,可以看到如何编译构建pgadmin4,官方采用了多阶段镜像构建技术(multi-stage build),这个是比较nice的,可以有效控制docker镜像的大小,减少镜像构建时候的中间产物,并可以提高镜像的安全性。
那docker build的方式是比较复杂的,但可以直接使用官方已经build好的镜像,例如,dpage这个仓库
[root@node4 test]# docker search pgadmin4
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
dpage/pgadmin4 pgAdmin 4 is a web based administration tool… 1297
fenglc/pgadmin4 pgAdmin is an open source administration and… 47
thajeztah/pgadmin4 Simple Docker image for pgAdmin 4. Not inten… 26 [OK]
biarms/pgadmin4 A docker image for running PGAdmin on an arm… 5
foxylion/pgadmin4 PostgreSQL pgAdmin 4 with binary support (ba… 3 [OK]
chinaboeller/pgadmin4 Simple Docker image for pgAdmin 4. Base conf… 3
naobana/pgadmin4 pgadmin4 version 4.18 for Raspberry PI 3 and… 1
es1n/pgadmin4-oc pgAdmin4 for OpenShift 1
elesdoar/pgadmin4 Dockerized Image for pgAdmin4 1 [OK]
ddidier/pgadmin4 The pgAdmin 4 administration tool for Postgr… 1 [OK]
bafss2020/pgadmin4 0
lezapedrola/pgadmin4 0
klovercloud/pgadmin4 0
kleland/pgadmin4 0
nmfr/pgadmin4 0
oawofolu/pgadmin4-base 0
still42/pgadmin4 0
ravermeister/pgadmin4 pgadmin4 docker container from python-wheel … 0
russell/pgadmin4 pgadmin4 container 0 [OK]
bharat/pgadmin4_redis pgadmin4 with redis baked sessions 0
ardiyanto/pgadmin4 0
stivehu/pgadmin4 pgadmin4 dockerized version 0 [OK]
bernardelli/pgadmin4 PgAdmin4 local server 0 [OK]
044270801/pgadmin47 0
044270801/pgadmin4 0
那么,docker镜像的来源可以说有两个,一个是使用现成的官方已经制作好的镜像,另一个是自己仿官方的镜像,自己build一个镜像,例如上面提到的源码内的Dockerfile,使用的是alpine:latest镜像,当然了,我们也可以使用python的镜像或者centos7的镜像等等自己喜欢的, 熟悉的镜像做为基础镜像来制作
以官方镜像制作为例,主要做的工作是构建依赖国内化,下面是部分改动:
FROM alpine:latest AS app-builder
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com\/alpine/g' /etc/apk/repositories \
&& sed -i 's/alpine\/v3.19/v3.19/g' /etc/apk/repositories \
&&echo "registry=https://registry.npm.taobao.org" > /root/.npmrc \
&& apk add --no-cache \
autoconf \
automake \
bash \
g++ \
git \
libc6-compat \
libjpeg-turbo-dev \
libpng-dev \
libtool \
make \
nasm \
nodejs \
npm \
yarn \
zlib-dev
# Create the /pgadmin4 directory and copy the source into it. Explicitly
# remove the node_modules directory as we'll recreate a clean version, as well
# as various other files we don't want
COPY web /pgadmin4/web
RUN export CPPFLAGS="-DPNG_ARM_NEON_OPT=0" \
&& npm config set registry https://registry.npm.taobao.org \
&& npm config set strict-ssl false \
后面的省略了
二、
rpm方式部署安装pgadmin4
centos7首先添加pgdg仓库:
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
其次,添加pgadmin4仓库:
yum install pgadmin4-redhat-repo.noarch -y
最后添加阿里云的epel源和基础源:
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
开始部署pgadmin4:
yum install pgadmin4-web pgadmin4-server -y
非常简单的就安装完成了,此时需要初始化pgadmin4,初始化完成后就可以愉快的使用了:
按提示输入任意邮箱,邮箱做为用户名,密码自己记住就可以了,该初始化脚本会帮助你把httpd启动(selinux和防火墙建议是关闭的)
[root@centos5 ~]# bash /usr/pgadmin4/bin/setup-web.sh
Setting up pgAdmin 4 in web mode on a Redhat based platform...
Creating configuration database...
NOTE: Configuring authentication for SERVER mode.
Enter the email address and password to use for the initial pgAdmin user account:
Email address: 123@123.com
Password:
Retype password:
pgAdmin 4 - Application Initialisation
======================================
Creating storage and log directories...
Configuring SELinux...
setsebool: SELinux is disabled.
setsebool: SELinux is disabled.
/usr/pgadmin4/bin/setup-web.sh: line 98: semanage: command not found
/usr/pgadmin4/bin/setup-web.sh: line 100: semanage: command not found
The Apache web server is not running. We can enable and start the web server for you to finish pgAdmin 4 installation. Continue (y/n)? y
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
Apache successfully enabled.
Apache successfully started.
You can now start using pgAdmin 4 in web mode at http://127.0.0.1/pgadmin4
欧拉操作系统:
欧拉操作系统比较麻烦,不能直接使用上面提到的那些yum源,虽然华为云有自己的epel仓库和基础镜像仓库,但这两个yum源里面是肯定没有pgadmin4的:
CentOS 6 / RHEL 6
wget -qO /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-6.repo
wget -qO /etc/yum.repos.d/epel.repo http://mirrors.myhuaweicloud.com/repo/epel-6.repo
CentOS 7 / RHEL 7
wget -qO /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-7.repo
wget -qO /etc/yum.repos.d/epel.repo http://mirrors.myhuaweicloud.com/repo/epel-7.repo
CentOS 8 / RHEL 8
wget -qO /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-8.repo
wget -qO /etc/yum.repos.d/epel.repo http://mirrors.myhuaweicloud.com/repo/epel-8.repo
wget -qO /etc/yum.repos.d/epel-modular.repo http://mirrors.myhuaweicloud.com/repo/epel-modular.repo
因此,欧拉需要利用离线包来安装,这里不得不吐槽一下欧拉,完全是一个东拼西凑的系统,虽然包管理器是yum,但仓库着实难找,和centos7又是通用的,个别包有些差异,但问题不大。回到本问题来,centos7下的pgadmin4是完全可以用在欧拉的
离线安装包:链接:https://pan.baidu.com/s/1-GHYuFxbZt6t08yLTSUTpA?pwd=post
提取码:post
--来自百度网盘超级会员V6的分享
注:按照仓库文件的标准写在/etc/yum.repo.d/目录下就可以使用了
但挂载离线包后会报错:
[root@localhost test]# vim /etc/yum.repos.d/
CentOS-Base.repo epel.repo local.repo
[root@localhost test]# vim /etc/yum.repos.d/local.repo
[root@localhost test]# vim /etc/yum.repos.d/local.repo
[root@localhost test]# yum install pgadmin4-web pgadmin4-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
ddfsdfs | 2.9 kB 00:00:00
dfsdfs | 3.6 kB 00:00:00
ddfsdfs/primary_db | 17 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package pgadmin4-server.x86_64 0:6.21-1.el7 will be installed
--> Processing Dependency: postgresql-libs >= 11 for package: pgadmin4-server-6.21-1.el7.x86_64
--> Processing Dependency: python3 for package: pgadmin4-server-6.21-1.el7.x86_64
---> Package pgadmin4-web.noarch 0:6.21-1.el7 will be installed
--> Processing Dependency: pgadmin4-python3-mod_wsgi for package: pgadmin4-web-6.21-1.el7.noarch
--> Processing Dependency: httpd for package: pgadmin4-web-6.21-1.el7.noarch
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-99.el7.centos.1 will be installed
--> Processing Dependency: httpd-tools = 2.4.6-99.el7.centos.1 for package: httpd-2.4.6-99.el7.centos.1.x86_64
--> Processing Dependency: system-logos >= 7.92.1-1 for package: httpd-2.4.6-99.el7.centos.1.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-99.el7.centos.1.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-99.el7.centos.1.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-99.el7.centos.1.x86_64
---> Package pgadmin4-python3-mod_wsgi.x86_64 0:4.9.0-1.el7 will be installed
--> Processing Dependency: libpython3.6m.so.1.0()(64bit) for package: pgadmin4-python3-mod_wsgi-4.9.0-1.el7.x86_64
---> Package postgresql15-libs.x86_64 0:15.6-1PGDG.rhel7 will be installed
---> Package python3.x86_64 0:3.6.8-21.el7_9 will be installed
--> Processing Dependency: python3-setuptools for package: python3-3.6.8-21.el7_9.x86_64
--> Processing Dependency: python3-pip for package: python3-3.6.8-21.el7_9.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-7.el7 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.eulerosv2r7 will be installed
---> Package httpd.x86_64 0:2.4.6-99.el7.centos.1 will be installed
--> Processing Dependency: system-logos >= 7.92.1-1 for package: httpd-2.4.6-99.el7.centos.1.x86_64
---> Package httpd-tools.x86_64 0:2.4.6-99.el7.centos.1 will be installed
---> Package mailcap.noarch 0:2.1.41-2.eulerosv2r7 will be installed
---> Package python3-libs.x86_64 0:3.6.8-21.el7_9 will be installed
---> Package python3-pip.noarch 0:9.0.3-8.el7 will be installed
---> Package python3-setuptools.noarch 0:39.2.0-10.el7 will be installed
--> Finished Dependency Resolution
Error: Package: httpd-2.4.6-99.el7.centos.1.x86_64 (ddfsdfs)
Requires: system-logos >= 7.92.1-1
Available: euleros-logos-2.0-4.h5.eulerosv2r7.noarch (dfsdfs)
system-logos = 2.0-4.h5.eulerosv2r7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
此时,先安装httpd服务就可以避开这个坑了(需要先把离线包关闭了,使用本地源),也就是说安装命令有顺序,顺序如下:
yum install httpd -y
yum install pgadmin4-server pgadmin4-web policycoreutils-python -y
剩下的和上面的centos一样,同样的初始化pgadmin4就可以了:
注意,该脚本可以反复执行,下面是反复执行后的输出,按y启动web就可以了
[root@centos5 yum.repos.d]# bash /usr/pgadmin4/bin/setup-web.sh
Setting up pgAdmin 4 in web mode on a Redhat based platform...
Creating configuration database...
pgAdmin 4 - Application Initialisation
======================================
Creating storage and log directories...
Configuring SELinux...
setsebool: SELinux is disabled.
setsebool: SELinux is disabled.
The Apache web server is running and must be restarted for the pgAdmin 4 installation to complete. Continue (y/n)? y
Apache successfully restarted. You can now start using pgAdmin 4 in web mode at http://127.0.0.1/pgadmin4
如果想重新初始化,删除/var/lib/pgadmin4 文件夹下的内容就可以了,/var/lib/pgadmin4 这个文件夹是脚本创建的,并且会给与一定的权限,这些都是脚本自动处理,所以可以删除
当然了,还有其它的方式部署安装pgadmin4,比如,python3+httpd,python3+nginx等等方式,但完全没有必要这么折腾,因为实在是太麻烦了
pgadmin4-8.5对于python3的版本要求大概是3.7以及3.7以上版本,安装过程有很多需要注意的地方,稍微一不注意就会把系统环境搞乱的,而pgadmin4-6.22版本也就是rpm安装的版本应该是2023年才推出来的,据网上资料有不少漏洞,但漏洞集中出现在Windows版本内,Linux并没有这些问题让人困扰
三、
pgadmin4的初步使用
1、
pgadmin4的语言选择
首页的首选项里
2、
web界面连接postgresql数据库
名称随意,最好是有点意义的名称
我这里使用的超级用户postgresq和它的密码:
3、
表权限授予
点到所有表这里
按向导提示授予权限,权限可以细分到很细的程度:
4、
维护功能
主要是vacuum,analyze,reindex,这个地方是非常方便的
5、
ddl语句查询
注意,和桌面版本相比,web版本少了一个psql工具
还有一些其它的比较方便的功能,比如统计表行数,查看表依赖,表统计信息等等,有些地方非常详细,例如表的统计信息:
在导入外部数据方面,pgadmin4可能要比navicat这些稍微弱一些,但其它方面基本是没什么问题的,好像是只支持csv
pgadmin4的安装部署和初步使用就介绍到这了,以后看情况在补充吧