我刚刚安装了 postgresql,并在安装过程中指定了密码 x。
当我尝试执行 createdb
并指定任何密码时,我会收到以下消息:
createdb: could not connect to database postgres: FATAL: password authentication failed for user
createuser
也一样。
我应该如何开始? 我可以将自己作为用户添加到数据库吗?
最佳答案
其他答案对我来说并不完全令人满意。以下是在 Xubuntu 12.04.1 LTS 上适用于 postgresql-9.1 的方法。
使用用户 postgres 连接到默认数据库:
sudo -u postgres psql template1
设置用户postgres的密码,然后退出psql(Ctrl-D):
ALTER USER postgres with encrypted password 'xxxxxxx';
编辑pg_hba.conf
文件:
sudo vim /etc/postgresql/9.1/main/pg_hba.conf
在 postgres 的行中将“peer”改为“md5”:
local all postgres
peermd5
要知道你正在运行什么版本的 postgresql,请在 /etc/postgresql
下查找版本文件夹。 .此外,您可以使用 Nano 或其他编辑器代替 VIM。
重启数据库:
sudo /etc/init.d/postgresql restart
(在这里您可以检查它是否适用于 psql -U postgres
)。
创建一个和你同名的用户(要找到它,你可以输入 whoami
):
sudo createuser -U postgres -d -e -E -l -P -r -s
<my_name>
这些选项告诉 postgresql 创建一个可以登录的用户,创建数据库,创建新角色,是一个 super 用户,并且有一个加密的密码。真正重要的是 -P -E,让您输入将被加密的密码,以及 -d,以便您可以执行 createdb
.
注意密码:它会首先询问您两次新密码(针对新用户),重复一次,然后再询问一次 postgres 密码(在步骤 2 中指定的密码)。
再次,编辑 pg_hba.conf
文件(参见上面的步骤 3),并将“所有”其他用户的行上的“peer”更改为“md5”:
local all all
peermd5
重新启动(如第 4 步),并检查您是否可以在没有 -U postgres 的情况下登录:
psql template1
请注意,如果您只执行 psql
,它将失败,因为它会尝试将您连接到与您同名的默认数据库(即 whoami
)。 template1 是从一开始就存在的管理数据库。
现在createdb <dbname>
应该可以。
https://stackoverflow.com/questions/1471571/