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状态