postgresql – pg_dump:[archiver(db)]与数据库的连接失败:致
我正在尝试将我的Postgres数据库备份到另一台服务器,但我一直被拒绝访问.
我的pg_hba.conf文件如下所示: # DO NOT DISABLE! # If you change this first entry you will need to make sure that the # database superuser can access the database using some other method. # Noninteractive access to all databases is required during automatic # maintenance (custom daily cronjobs,replication,and similar tasks). # # Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost,by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 md5 #host replication postgres ::1/128 md5 如果我将postgres设置从PEER更改为TRUST,我可以备份代码,但网站无法再访问数据库(关于SSL错误,我知道这不是问题). 当我保持原样,PEER,服务器工作 – php可以访问数据库 – 但我在尝试运行备份时遇到错误: 根> pg_dump -U postgres tablename> TEST.SQL .pg_dump:[archiver(db)]与数据库“tablename”的连接失败:致命:用户“postgres”的对等身份验证失败. PHP Apache Web站点使用适当的用户名和密码. 备份脚本如下所示:pg_dump -U postgres tablename> TEST.SQL 我怎样才能满足网站和备份脚本,所以我可以同时运行这两个? 尝试整个脚本是这样的: 取自服务器故障:ssh remote command-fu
如果你的PHP Apache网站与peer一起使用,请保留它,让我们来处理它.
1.第一种方法: 由于身份验证是基于对等的,因此您必须使用-h选项指定主机名(通常为localhost): ssh server "pg_dump -h localhost -U postgres | gzip -c" >/backup/sqlbackup.sql.gz 这里的主要问题是将提示您输入postgres用户密码.这是备份自动化的问题. 您可以参考this以避免提示输入密码.但我会描述: >在$HOME中创建一个名为.pgpass的隐藏文件 2.第二种方法: 您可以为备份添加特定角色并信任它. 在Postgres中创建备份角色: CREATE ROLE backup WITH LOGIN SUPERUSER PASSWORD 'password' 编辑文件pg_hba.conf,添加角色备份并信任它: # Database administrative login by Unix domain socket local all postgres peer local all backup trust 重启postgresql 然后您应该能够使用以下内容运行备份: ssh server "pg_dump -U backup postgres | gzip -c" >/backup/sqlbackup.sql.gz (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |