golang基于Web的PostgreSQL数据库浏览器插件pgweb的使用
Golang基于Web的PostgreSQL数据库浏览器插件pgweb的使用
概述
Pgweb是一个用Go编写的基于Web的PostgreSQL数据库浏览器,可在Mac、Linux和Windows机器上运行。它以简单的二进制文件形式分发,零依赖,非常易于使用,并包含恰到好处的功能集。
特性
- 跨平台:Mac/Linux/Windows (64位)
- 简单安装(以单个二进制文件分发)
- 零依赖
- 支持PostgreSQL 9.1+
- 支持原生SSH隧道
- 多数据库会话
- 执行和分析自定义SQL查询
- 将表和查询数据导出为CSV/JSON/XML
- 查询历史记录
- 服务器书签
安装
支持的操作系统的预编译二进制文件可用。
使用
基本使用
启动服务器:
pgweb
也可以提供连接参数:
pgweb --host localhost --user myuser --db mydb
支持连接URL格式:
pgweb --url postgres://user:password@host:port/database?sslmode=[mode]
pgweb --url "postgres:///database?host=/absolute/path/to/unix/socket/dir"
多数据库会话
要启用pgweb中的多数据库会话,使用以下命令启动服务器:
pgweb --sessions
或者设置环境变量:
PGWEB_SESSIONS=1 pgweb
示例代码
以下是一个使用pgweb连接PostgreSQL数据库的完整示例:
package main
import (
"log"
"os/exec"
)
func main() {
// 使用pgweb连接本地PostgreSQL数据库
cmd := exec.Command("pgweb", "--host", "localhost", "--port", "5432", "--user", "postgres", "--db", "mydb")
// 启动pgweb服务
err := cmd.Start()
if err != nil {
log.Fatalf("Failed to start pgweb: %v", err)
}
log.Println("pgweb is running on http://localhost:8081")
// 等待命令完成
err = cmd.Wait()
if err != nil {
log.Printf("pgweb exited with error: %v", err)
}
}
测试
在运行测试之前,请确保PostgreSQL服务器在localhost:5432
上运行。此外,您必须拥有可以在本地环境中创建新数据库的postgres
用户。pgweb服务器不应同时运行。
执行测试套件:
make test
如果您在本地使用Docker,还可以使用单个命令针对所有支持的PostgreSQL版本运行pgweb测试套件:
make test-all
贡献
- Fork此仓库
- 为新的功能或错误修复创建新的特性分支
- 提交您的更改
- 执行测试套件
- 推送您的代码并打开一个新的拉取请求
- 使用issues提问
- 查看wiki获取额外文档
许可证
MIT许可证。有关更多详细信息,请参阅LICENSE文件。
更多关于golang基于Web的PostgreSQL数据库浏览器插件pgweb的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang基于Web的PostgreSQL数据库浏览器插件pgweb的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用pgweb构建基于Web的PostgreSQL数据库浏览器
pgweb是一个用Go编写的基于Web的PostgreSQL数据库管理工具,它允许你通过浏览器界面查看和管理PostgreSQL数据库。
pgweb简介
pgweb的主要特点:
- 轻量级,单二进制文件部署
- 跨平台支持
- 无需安装,直接运行
- 提供简洁的Web界面
- 支持SQL查询、表浏览、数据导出等功能
安装pgweb
方法1:直接下载二进制文件
从pgweb releases页面下载对应平台的二进制文件。
方法2:使用go install安装
go install github.com/sosedoff/pgweb@latest
安装后二进制文件会在$GOPATH/bin
目录下。
基本使用
启动pgweb
最简单的启动方式是指定数据库连接字符串:
pgweb --url postgres://user:password@host:port/dbname
或者分别指定参数:
pgweb --host localhost --port 5432 --user postgres --pass postgres --db postgres
常用启动参数
--listen
:指定监听地址和端口,默认:8081
--ssl
:启用HTTPS--readonly
:只读模式--sessions
:启用多会话支持
示例代码:集成pgweb到Go应用
如果你想在自己的Go应用中集成pgweb的功能,可以参考以下代码:
package main
import (
"log"
"net/http"
"os"
"os/signal"
"syscall"
"github.com/sosedoff/pgweb/pkg/command"
"github.com/sosedoff/pgweb/pkg/web"
)
func main() {
// 配置pgweb选项
opts := command.Options{
Host: "localhost",
Port: 5432,
User: "postgres",
Pass: "postgres",
Database: "postgres",
Listen: ":8081",
}
// 创建pgweb服务器
server, err := web.NewServer(opts)
if err != nil {
log.Fatal("Failed to create server:", err)
}
// 启动HTTP服务器
go func() {
log.Println("Starting pgweb server on", opts.Listen)
if err := http.ListenAndServe(opts.Listen, server); err != nil {
log.Fatal("Server error:", err)
}
}()
// 等待中断信号
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
<-sigChan
log.Println("Shutting down server...")
}
高级功能
1. 通过环境变量配置
pgweb支持通过环境变量配置:
export DATABASE_URL=postgres://user:pass@host:port/dbname
pgweb
2. 使用Docker运行
docker run -p 8081:8081 -e DATABASE_URL=postgres://user:pass@host:port/dbname sosedoff/pgweb
3. 作为系统服务运行
创建systemd服务文件/etc/systemd/system/pgweb.service
:
[Unit]
Description=pgweb
After=network.target
[Service]
Environment="DATABASE_URL=postgres://user:pass@host:port/dbname"
ExecStart=/usr/local/bin/pgweb
Restart=always
User=pgweb
[Install]
WantedBy=multi-user.target
然后启用并启动服务:
sudo systemctl enable pgweb
sudo systemctl start pgweb
安全注意事项
- 生产环境中务必使用
--ssl
启用HTTPS - 考虑使用
--readonly
限制修改操作 - 不要使用高权限数据库账户
- 限制访问IP范围
替代方案
如果你需要更多功能,可以考虑:
pgweb是一个简单易用的工具,特别适合快速查看和简单操作PostgreSQL数据库,但对于复杂的管理任务可能需要更专业的工具。