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

贡献

  1. Fork此仓库
  2. 为新的功能或错误修复创建新的特性分支
  3. 提交您的更改
  4. 执行测试套件
  5. 推送您的代码并打开一个新的拉取请求
  6. 使用issues提问
  7. 查看wiki获取额外文档

许可证

MIT许可证。有关更多详细信息,请参阅LICENSE文件。


更多关于golang基于Web的PostgreSQL数据库浏览器插件pgweb的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于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

安全注意事项

  1. 生产环境中务必使用--ssl启用HTTPS
  2. 考虑使用--readonly限制修改操作
  3. 不要使用高权限数据库账户
  4. 限制访问IP范围

替代方案

如果你需要更多功能,可以考虑:

  • Adminer - 轻量级PHP数据库管理工具
  • DBeaver - 功能丰富的桌面数据库工具
  • TablePlus - 现代原生数据库客户端

pgweb是一个简单易用的工具,特别适合快速查看和简单操作PostgreSQL数据库,但对于复杂的管理任务可能需要更专业的工具。

回到顶部