我最近在 Windows 7 上安装了 PostgreSQL,每次我尝试使用 CMD 执行 SQL 命令时,都会出现此错误
createdb: could not connect to database template1: FATAL: password authentication failed for user "R-61"
其中 R-61 是我的 Windows 机器用户名。
以下是我如何使用 CMD 和 pgSQL
- 首先我进入 pgSQL bin 文件夹
$ cd C:\xampp\pgsql\9.1\bin
- 我尝试创建一个数据库
$ createdb NEWDATABASE
我收到输入密码的提示。这让我很困惑,因为我不知道密码是什么。我试过我的窗口用户密码、
postgres
超级用户密码,但似乎都不起作用。这是我收到的错误消息createdb: could not connect to database template1: FATAL: password authentication failed for user "R-61"
有人知道这个问题的解决办法吗?我想把 R-61 的用户改为
postgres
超级用户,但我不知道该怎么做。
非常需要您的帮助。
答案1
createdb
是一个必须像任何其他客户端命令一样连接到服务器的命令(即使在服务器本身上运行),因此需要数据库用户进行连接。
如果您没有使用-U username
选项指定数据库用户,它将使用您的操作系统用户名,因此错误消息中引用了"R-61"
。所要求的密码是不存在的R-61
数据库用户的密码。
还有其他选项,例如主机默认为localhost
和端口默认为5432
,请参阅其手册页对他们所有人来说。
既然您提到您知道 postgres 超级用户密码,最简单的解决方案就是使用该postgres
用户启动命令。无论如何,这都是有意义的,因为在全新安装中,该用户是唯一有权创建数据库的用户。
尝试createdb -U postgres newdatabase
它应该要求输入密码,这将是数据库用户的密码postgres
。
如果它不要求输入密码,则意味着安全策略就是pg_hba.conf
这样配置的。如果密码丢失(或者从未设置过密码,这是某些自动安装的情况,尤其是在 Unix 上),则pg_hba.conf
必须更改密码并重新加载服务以授权无密码连接,至少暂时设置新密码。
答案2
我没有这方面的直接经验,但我研究了一下,我认为这就是你要找的。我发现一个类似的问题,表明 Windows 上的 PostgresSQL 在安装过程中要求输入密码。该密码可能是 PostgresSQL 管理员帐户的密码。管理员帐户应该可以连接到该数据库并调整其权限。
或者,编辑 pg_hba.conf 文件以信任来自特定用户和位置的用户连接,这样也应该允许您连接。您需要更正权限问题并恢复编辑的 pg_hba.conf 行。
我发现这个讨论是: 回复:默认密码 pg_hba.conf 文件的文档: 19.1. pg_hba.conf 文件