目录
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
输入密码