PostgreSQL 安装与基础使用
在你的 VPS 上用 apt 安装 PostgreSQL,创建角色与数据库,掌握 psql 常用元命令,并按需开启远程访问。
PostgreSQL 是一款成熟、稳定、以标准 SQL 兼容性著称的开源关系型数据库,非常适合部署在你自己的服务器或 VPS 上。本文以 Ubuntu/Debian 为例,带你从零完成安装与基础操作。
安装
在 Ubuntu/Debian 上,官方仓库即自带 PostgreSQL,直接用 apt 安装即可:
sudo apt update
sudo apt install -y postgresql postgresql-contrib
安装完成后服务会自动启动。可以确认一下运行状态:
sudo systemctl status postgresql
安装过程会自动创建一个名为 postgres 的系统用户和同名数据库超级用户。
首次连接
PostgreSQL 默认使用 peer 认证,即系统用户名要与数据库角色名一致。所以第一次进入命令行,要借助 postgres 系统账号:
sudo -u postgres psql
进入后提示符会变成 postgres=#,这就是交互式客户端 psql。输入 \q 可以退出。
常用元命令
psql 里以反斜杠开头的是元命令,不是 SQL,不用加分号:
- \l —— 列出所有数据库
- \du —— 列出所有角色(用户)
- \c dbname —— 切换到某个数据库
- \dt —— 列出当前数据库的所有表
- \d tablename —— 查看某张表的结构
- \? —— 查看元命令帮助
创建角色与数据库
PostgreSQL 里「用户」统称为角色(role)。下面创建一个可登录的角色并设置密码,再建一个归它所有的数据库:
CREATE ROLE appuser WITH LOGIN PASSWORD 'your_strong_password';
CREATE DATABASE appdb OWNER appuser;
GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser;
给已存在角色改密码:
ALTER ROLE appuser WITH PASSWORD 'new_password';
之后就能用该角色连接指定数据库:
psql -h 127.0.0.1 -U appuser -d appdb
允许远程访问
默认 PostgreSQL 只监听本机(localhost),外部连不上。要开放需改两个文件(路径中的 16 是版本号,按实际调整)。
第一步,编辑 postgresql.conf,让它监听所有网卡:
sudo nano /etc/postgresql/16/main/postgresql.conf
listen_addresses = '*'
第二步,编辑 pghba.conf,添加一条允许远程网段的规则:
sudo nano /etc/postgresql/16/main/pg_hba.conf
host all all 0.0.0.0/0 scram-sha-256
改完重启服务生效:
sudo systemctl restart postgresql
生产环境请把 0.0.0.0/0 收窄为可信 IP,并在防火墙放行 5432 端口。
与 MySQL 的简单区别
- 用户模型:MySQL 的账号是 user@host;PostgreSQL 用角色,登录能力由 LOGIN 属性决定。
- 默认端口:PostgreSQL 是 5432,MySQL 是 3306。
- 客户端:PostgreSQL 用 psql,元命令是 \l、\dt;MySQL 用 mysql,对应 SHOW DATABASES;、SHOW TABLES;。
- 库/表切换:PostgreSQL 用 \c dbname 切库;MySQL 用 USE dbname;。
- 标准兼容:PostgreSQL 对 SQL 标准和复杂查询、事务的支持更严格、更完整。
小结
在 Ubuntu/Debian 上,apt install postgresql 即可完成安装,首次经 sudo -u postgres psql 进入,用 CREATE ROLE/CREATE DATABASE 建好角色与库,靠 \l \du \dt 快速查看现状。需要远程时,记得同时改 listenaddresses 与 pghba.conf 并重启,同时用防火墙和精确网段把访问面收窄,数据库才安全可用。