Skip to main content

PostgreSQL

在 Ubuntu 20.04 上安装 PostgreSQL

安装

sudo apt install postgresql postgresql-contrib

如果是正常的 Ubuntu,你可以使用下面的命令来启动数据库:

sudo systemctl start postgresql.service

如果在不支持 Systemd 的 WSL 上,就没法使用上面这个命令。参见:System has not been booted with systemd as init system (PID 1). Can't operate

改用下面的命令来启动数据库:

sudo service postgresql start

进入数据库:

sudo -u postgres psql

参见:Get started with databases on Windows Subsystem for Linux

初始化账号

创建 Linux 用户,设置用户密码:

sudo adduser pg1

切换到主账号:

sudo -iu postgres

创建新角色(role),名字同上(pg1):

createuser --interactive pg1

创建数据库:

createdb pg1

改变数据库所有者

ALTER DATABASE database_name OWNER TO new_owner;

改变用户密码

登录:

sudo -u postgres psql

修改密码:

\password pg1

要修改密码才能连接成功,好奇怪的问题。

备份与恢复

旧服务器上:

pg_dump -Fc -d dbname -f old.dump

新服务器上导入:

pg_restore --dbname=dbname --clean --if-exists --no-owner --no-privileges --verbose old.dump

简单版本

在旧服务上导出,在新服务器上是一个空的数据库,导入简化为:

# 为兼容不同数据库版本,采用 plain text 格式
pg_dump dbname > old.sql
# 在新的空数据库中恢复
psql -d dbname -f old.sql

更推荐的完整版命令(带详细输出和错误停止):

psql -d dbname -X --set ON_ERROR_STOP=on -f old.sql

选项说明:

  • -d dbname:指定要恢复到的数据库名称
  • -f old.sql:从文件读取 SQL 命令(比 < d.sql 重定向更清晰)
  • -X:不加载 .psqlrc 文件,避免额外设置干扰
  • --set ON_ERROR_STOP=on:遇到错误时立即停止(推荐,防止部分恢复导致数据不一致)

查看prisma状态