Debian 与 PostgreSQL 集成开发环境搭建
一 环境准备与安装
- 更新系统并安装数据库与常用工具:
- sudo apt update && sudo apt upgrade -y
- sudo apt install -y postgresql postgresql-contrib
- 验证服务状态(应显示 active running):
- sudo systemctl status postgresql
- 以上步骤适用于 Debian 12 等现代版本;安装完成后会自动创建系统用户 postgres 与数据库集群。
二 数据库与用户初始化
- 切换到 postgres 用户并登录 psql:
- 在 psql 中执行(示例账户与库名可按需修改):
- CREATE USER myuser WITH PASSWORD ‘mypassword’;
- CREATE DATABASE mydatabase OWNER myuser;
- GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
- \q
- 可选:为本地操作系统用户 postgres 设置密码(便于本地 psql 免交互登录):
- 在 psql 中:\password postgres
- 或使用命令:sudo -u postgres psql -c “ALTER USER postgres PASSWORD ‘newpassword’;”
三 Python 开发环境连接 PostgreSQL
- 安装 Python 与编译依赖:
- sudo apt install -y python3 python3-dev python3-pip
- sudo apt install -y libpq-dev # 编译 psycopg2 必需
- 安装驱动(二选一,推荐二进制包以避免编译依赖问题):
- pip3 install psycopg2-binary
- 或 pip3 install psycopg2
- 测试连接脚本(使用上节创建的账户与库):
- python3 - <<‘PY’
import psycopg2
try:
conn = psycopg2.connect(
user=“myuser”, password=“mypassword”,
host=“127.0.0.1”, port=“5432”, database=“mydatabase”
)
cur = conn.cursor()
cur.execute(“SELECT version();”)
print(“PostgreSQL version:”, cur.fetchone())
except Exception as e:
print(“Error:”, e)
finally:
if conn:
cur.close(); conn.close()
PY
- 上述流程覆盖驱动安装与最小可用连接示例,适合作为 Django、Flask 等项目的起点。
四 PHP 开发环境连接 PostgreSQL
- 安装 PHP 与 PostgreSQL 扩展:
- sudo apt install -y php php-pgsql
- 简单测试脚本(使用 PDO,便于切换驱动与异常处理):
- sudo tee /var/www/html/pg_test.php >/dev/null <<‘PHP’ PDO::ERRMODE_EXCEPTION]);
echo "PostgreSQL connected via PDO";
} catch (PDOException $e) {
http_response_code(500);
echo "Connection failed: " . $e->getMessage();
}
?>
- 将文件放入 /var/www/html/ 后访问 http://服务器IP/pg_test.php 验证;若使用 Apache,确保模块已启用并重启服务。
五 常见问题与远程访问配置
- 服务与连接排查:
- 服务未运行:sudo systemctl start postgresql;设置开机自启:sudo systemctl enable postgresql
- 认证失败:核对用户名/密码、数据库名;查看日志:/var/log/postgresql/postgresql-{version}-main.log
- 远程访问(仅在需要时开启,并注意安全):
- 编辑配置文件(版本号以实际为准,如 /etc/postgresql/15/main/):
- postgresql.conf:将 listen_addresses 改为 ‘*’(或指定内网网段)
- pg_hba.conf:添加规则,例如
- host all all 192.168.1.0/24 md5
- host all all 0.0.0.0/0 scram-sha-256(更安全的口令认证)
- 重启生效:sudo systemctl restart postgresql
- 防火墙放行:sudo ufw allow 5432/tcp(或仅放行内网段)
- 备份与恢复(开发/迁移常用):
- 备份:sudo -i -u postgres pg_dump mydatabase > mydatabase_backup.sql
- 恢复:sudo -i -u postgres psql mydatabase < mydatabase_backup.sql
- 以上路径、认证方法与命令适用于常见 Debian 12 + PostgreSQL 15 场景;不同版本目录可能为 /etc/postgresql/{version}/main/。务必限制来源网段并使用强口令。