windows 的 pg 数据库备份恢复(亲测有效)

1 需求

现在在本地windows电脑安装了一个数据库app01,现在需要对这个库进行备份,然后迁移到其他数据库里面

进行恢复

2 无密码备份1

直接使用不需要输入密码进行备份,恢复

在windows电脑的pg 数据库的配置文件pg_hba.conf 里面添加

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

然后在服务里面,找到pg 数据库,进行重启

需要将数据库命令所在的文件夹路径添加到全局配置里面,这样在其他文件夹就可以直接使用数据库命令

pg_dump -U postgres -d app01 -F c -f backup_file.dump

3 无密码恢复1

pg_dump -U postgres -d app01 -F c -f backup_file.dump 使用这个命令,无需密码进行备份了,现在需要在app02数据库,恢复数据到这个里面

当你已经成功在无需密码的情况下完成了 app01 数据库的备份,接下来要把备份数据恢复到 app02 数据库,可按以下步骤操作:

步骤 1:确保目标数据库 app02 存在

如果 app02 数据库还未创建,你可以使用 psql 工具来创建它。在命令行中输入以下命令以 postgres 用户身份登录到 PostgreSQL 服务器:

psql -U postgres

登录成功后,在 psql 提示符下执行以下 SQL 语句创建 app02 数据库:

CREATE DATABASE app02;

然后输入 \q 退出 psql。

步骤 2:恢复备份数据到 app02 数据库

使用 pg_restore 命令将之前备份的 backup_file.dump 文件恢复到 app02 数据库。由于之前备份时无需密码,若当前的认证规则仍然允许无密码连接,那么执行以下命令即可:

pg_restore -U postgres -d app02 backup_file.dump
  • -U postgres:指定使用 postgres 用户进行恢复操作。
  • -d app02:指定将数据恢复到 app02 数据库。
  • backup_file.dump:之前生成的备份文件。

步骤 3:处理可能的权限问题

恢复数据后,要确保 postgres 用户或其他相关用户对 app02 数据库及其对象具有适当的权限。你可以使用以下 SQL 语句来授予常见的权限:

-- 以 postgres 用户身份登录到 app02 数据库
psql -U postgres -d app02

-- 授予对所有表的操作权限
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO postgres;

-- 授予对所有序列的 USAGE 和 UPDATE 权限
GRANT USAGE, UPDATE ON ALL SEQUENCES IN SCHEMA public TO postgres;

-- 授予对所有函数和过程的执行权限
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO postgres;

执行完上述 SQL 语句后,输入 \q 退出 psql。

步骤 4:验证恢复结果

你可以再次以 postgres 用户身份登录到 app02 数据库,然后查看数据库中的表和数据,以验证恢复操作是否成功:

psql -U postgres -d app02

登录后,你可以使用 \dt 命令查看数据库中的表,使用 SELECT 语句查询表中的数据。

通过以上步骤,你应该能够将 app01 数据库的备份数据成功恢复到 app02 数据库中。

4 使用密码登录数据库

windows电脑安装了一个数据库,现在需要所有用户需要根据密码才可以登录数据库,而不是免密登录,需要这么做?

ALTER USER postgres WITH PASSWORD ‘060708’;

你遇到的这个错误表明在使用 psql 以 postgres 用户身份连接数据库时,输入的密码不正确,导致密码认证失败。以下为你详细分析可能的原因及对应的解决办法:

1. 确认输入的密码是否正确

在命令行输入密码时,屏幕不会显示输入的字符,输入完成后按回车键系统会进行验证。你要确保输入的密码和之前为 postgres 用户设置的新密码一致。

2. 再次重置 postgres 用户的密码

如果你不确定密码是否设置成功或者忘记了密码,可以再次重置 postgres 用户的密码。

步骤 1:停止 PostgreSQL 服务

打开“服务”窗口,找到 PostgreSQL 服务(通常名称为 postgresql-x64-版本号),右键点击该服务,选择“停止”。

步骤 2:修改 pg_hba.conf 文件

临时将认证规则修改为 trust,这样无需密码就能以 postgres 用户身份登录数据库。打开 C:\Program Files\PostgreSQL\版本号\data\pg_hba.conf 文件,将相关规则修改如下:

# "local" is for Unix domain socket connections only
local   all             postgres                                trust
# IPv4 local connections:
host    all             postgres             127.0.0.1/32       trust
# IPv6 local connections:
host    all             postgres             ::1/128            trust

保存文件后,重新启动 PostgreSQL 服务。

步骤 3:重置密码

打开命令提示符,输入以下命令以 postgres 用户身份登录数据库:

psql -U postgres

此时无需输入密码就能登录。登录成功后,在 psql 提示符下执行以下 SQL 语句重置密码:

ALTER USER postgres WITH PASSWORD '新密码';

将 ‘新密码’ 替换为你想要设置的实际密码。

步骤 4:恢复 pg_hba.conf 文件

将 pg_hba.conf 文件中的认证规则改回 md5:

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

保存文件后,重新启动 PostgreSQL 服务。

3. 检查密码加密方式

确保 PostgreSQL 使用的是 md5 加密方式存储密码。在 postgresql.conf 文件中,找到 password_encryption 参数,确保其值为 md5:

password_encryption = 'md5'

修改后保存文件,重新启动 PostgreSQL 服务。

4. 检查 pg_hba.conf 文件的配置顺序

pg_hba.conf 文件中的规则是按顺序匹配的,确保没有其他规则优先匹配导致认证失败。例如,如果有一条规则允许某个特定 IP 地址无需密码连接,而你的连接恰好匹配到这条规则,就可能出现问题。

5. 检查防火墙设置

确保防火墙没有阻止 PostgreSQL 服务的端口(默认是 5432)。你可以暂时关闭防火墙进行测试,如果关闭防火墙后能正常连接,说明防火墙配置有问题,需要对防火墙进行相应的设置。

按照以上步骤操作,你应该能够解决密码认证失败的问题,成功以 postgres 用户身份连接到数据库。

5 有密码备份

pg_dump -U postgres -d app01 -F c -f backup_file.dump

只需要输入命令就可以,输入密码

6 有密码恢复

确定已经手动创建数据库

pg_restore -U postgres -d app09 backup_file.dump

输入密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值