Skip to content

37.3 pgAdmin4

警告

请注意以下上游已知问题:pgAdmin4 在 FreeBSD 上运行可能受到 Bug 7836Bug 8869 的影响。

本节基于 FreeBSD 14.3-RELEASE 操作系统环境展开。

pgAdmin4 是一款用于管理 PostgreSQL 数据库服务器的开源软件,也是 PostgreSQL 官方推荐的图形化管理工具。pgAdmin4 使用 Python(Flask 框架)和 React 编写,支持多种操作系统环境(如 Windows、UNIX、Linux 等),可在桌面模式和服务器模式下运行。

注意

pgAdmin4 通过 pip 安装,使用 SQLite 存储自身配置数据,无需本地安装 PostgreSQL 数据库即可运行。但需连接 PostgreSQL 数据库服务器才能发挥其管理功能。

pgAdmin4 需在 Python 环境下运行,安装时需使用 Python 的 pip 包管理工具,应先安装 Python。本节以系统默认的 Python 版本为例。注意,FreeBSD 系统可能默认未安装 Python,可通过启动 Python 解释程序确认:

sh
# python
python: Command not found   # 说明当前未安装 python 环境

技巧

可使用以下命令查看已安装的 Python 3 版本:

sh
$ python3 -V
Python 3.11.12

37.3.1 安装 Python 及 pip

使用 pkg 安装:

sh
# pkg install python3 py311-pip

或者使用 Ports:

sh
# cd /usr/ports/lang/python/ && make install clean
# cd /usr/ports/devel/py-pip/ && make install clean

说明:pip 是 Python 的包管理器,用于安装和管理 Python 包及其依赖。

37.3.2 安装配置 virtualenv

virtualenv 用于创建相互独立的 Python 虚拟环境。

本节通过 virtualenv 创建独立的 Python 环境来安装 pgAdmin4。

以下命令用于安装 virtualenv

使用 pkg 安装:

sh
# pkg install devel/py-virtualenv

使用 Ports 安装:

sh
# cd /usr/ports/devel/py-virtualenv/
# make install clean

通过运行以下命令创建 Python 虚拟环境 pgadmin4(virtual environment):

sh
# virtualenv pgadmin4

创建完成后,将显示如下信息:

sh
# virtualenv pgadmin4
created virtual environment CPython3.11.12.final.0-64 in 607ms
  creator CPython3Posix(dest=/root/pgadmin4, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv)
    added seed packages: pip==25.1.1, setuptools==80.3.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

在 root 用户的主目录(/root)下生成了虚拟环境 pgadmin4(省略其他文件输出):

sh
# ls
pgadmin4

37.3.3 文件结构

pgAdmin4 的文件结构如下。

sh
/
├── root/
   ├── pgadmin4/              # pgAdmin4 虚拟环境目录
   ├── bin/
   └── activate       # 虚拟环境激活脚本
   └── lib/
       └── python3.11/
           └── site-packages/
               └── pgadmin4/
                   ├── config.py        # pgAdmin4 配置文件
                   └── config_local.py  # pgAdmin4 本地配置文件
   └── .config/
       └── pip/
           └── pip.conf       # pip 配置文件
├── var/
   ├── lib/
   └── pgadmin/           # pgAdmin4 数据存储目录
   └── log/
       └── pgadmin/           # pgAdmin4 日志目录
└── usr/
    └── ports/
        ├── lang/
   └── python/        # Python Port
        ├── devel/
   ├── py-pip/        # pip Port
   └── py-virtualenv/ # virtualenv Port
        └── databases/
            └── py-sqlite3/    # py-sqlite3 Port

37.3.4 安装 sqlite3

使用 pkg 安装:

sh
# pkg install py311-sqlite3

技巧

注意版本要和 Port lang/python 相同。

或者使用 Ports 安装:

sh
# cd /usr/ports/databases/py-sqlite3/
# make install clean

激活 pgAdmin4 虚拟环境(命令前需要添加 .(点号)和空格):

sh
# . pgadmin4/bin/activate

可见 shell 提示符已变为(pgadmin4)(以下操作均在该 shell 下执行):

sh
(pgadmin4) #

37.3.5 安装 pgAdmin4

当前 pip 源要求使用 HTTPS,如系统缺少 SSL 证书,则需先安装证书包。

sh
(pgadmin4) root@ykla:~# pkg install ca_root_nss

如遇网络问题,可更换 pip 镜像源。设置为清华大学镜像源:

sh
(pgadmin4) root@ykla:~# pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Writing to /root/.config/pip/pip.conf

安装依赖项,包括 OpenJPEG 库和 Rust 编程语言环境:

sh
(pgadmin4) root@ykla:~# pkg install openjpeg rust

安装指定版本的 pgAdmin4(版本 9.4):

sh
(pgadmin4) root@ykla:~# pip install pgadmin4==9.4

注意

如果内存不足(小于 4 GB)且没有 swap,会提示 killed,如出现该问题请先添加交换空间(swap)。

37.3.5.1 故障排除

如果出现以下错误:

python
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1136)'))': /simple/pgadmin4/

以上错误由系统时间不准确所致,使用 ntpd -q -g pool.ntp.org 同步系统时间即可解决。详细说明参考本书其他相关章节。

37.3.6 配置并运行 pgAdmin4

安装完成后,需要配置才能正常运行 pgAdmin4。

安装完成后创建 pgAdmin4 本地配置文件(注意 Python 版本):

sh
(pgadmin4) root@ykla:~# touch ./pgadmin4/lib/python3.11/site-packages/pgadmin4/config_local.py

警告

请勿直接将 ./pgadmin4/lib/python3.11/site-packages/pgadmin4/config.py 复制为 ./pgadmin4/lib/python3.11/site-packages/pgadmin4/config_local.py,否则无论如何修改配置都不会生效,请直接创建空文件。

编辑配置 ./pgadmin4/lib/python3.11/site-packages/pgadmin4/config_local.py。示例:

ini
DEFAULT_SERVER = '0.0.0.0'        # 设置 pgAdmin4 监听所有网络接口
DEFAULT_SERVER_PORT = 5050        # 设置 pgAdmin4 服务端口为 5050
  • DEFAULT_SERVER 默认服务器监听地址更改为 0.0.0.0
  • DEFAULT_SERVER_PORT 可修改应用程序监听的端口。

手动创建 pgAdmin4 数据和日志目录:

sh
(pgadmin4) root@ykla:~# mkdir -p /var/lib/pgadmin   # 创建 pgAdmin 数据存储目录及父目录
(pgadmin4) root@ykla:~# mkdir -p /var/log/pgadmin   # 创建 pgAdmin 日志目录

配置文件编辑完成后,执行以下命令以初始化登录账号和密码。

启动 pgAdmin4 应用:

sh
(pgadmin4) root@ykla:~# pgadmin4

显示实例如下:

sh
NOTE: Configuring authentication for SERVER mode.
Enter the email address and password to use for the initial pgAdmin user account:
Email address: your_email		# 输入电子邮件地址
Password: your_new_password		# 输入登录密码,最少 6 个字符;同样不会打印密码,也不会是 ***
Retype password:				# 再次输入密码
pgAdmin 4 - Application Initialisation
======================================

Starting pgAdmin 4. Please navigate to http://0.0.0.0:5050 in your browser.
 * Serving Flask app 'pgadmin'
 * Debug mode: off

至此已安装并运行 pgAdmin4,可通过 http://ip:5050 访问 Web 控制面板:

登录 pgAdmin4

箭头所指处可以切换语言。

pgAdmin4 切换语言

pgAdmin4 中文界面

37.3.7 保持 pgAdmin4 后台运行

服务关闭后,如果需要再次运行,请使用 pgadmin4 的安装用户(此处是 root)进入其主目录,执行如下命令激活 pgadmin4 虚拟环境并启动服务(& 表示后台运行):

sh
root@ykla:~# . pgadmin4/bin/activate
(pgadmin4) root@ykla:~# pgadmin4 &

37.3.8 升级 pgAdmin4

如需升级 pgAdmin4,可按以下步骤操作。

在本测试中,直接使用 pip 升级 pgAdmin4 仍可能显示旧版本信息。

pgAdmin4 版本更新频繁,如需升级,必须先删除原来用 virtualenv 创建的 pgadmin4 目录,随后用安装用户再次执行如下命令,创建 Python 虚拟环境 pgadmin4:

sh
root@ykla:~# virtualenv pgadmin4

虚拟目录创建完成后,激活 pgadmin4 虚拟环境:

sh
root@ykla:~# . pgadmin4/bin/activate

激活后切勿启动服务,直接升级 pgAdmin4 到最新版本:

sh
(pgadmin4) root@ykla:~# pip install --upgrade pgadmin4

完成升级后启动 pgAdmin4 应用:

sh
(pgadmin4) root@ykla:~# pgadmin4

登录账户和密码保持不变(登录后不会提示更新,版本已为最新)。

37.3.9 参考文献

  • FreeBSD Project. PostgreSQL/Setup - FreeBSD Wiki[EB/OL]. (2024-06-09)[2026-03-25]. https://wiki.freebsd.org/PostgreSQL/Setup. 系统介绍了 FreeBSD 环境下 PostgreSQL 的安装配置方法,为本节提供了官方指南参考。
  • pgAdmin Development Team. pgAdmin 4 GitHub Repository[EB/OL]. [2026-04-17]. https://github.com/pgadmin-org/pgadmin4. pgAdmin 4 官方仓库,记载其技术栈为 Python(Flask)后端与 React 前端。