我刚刚安装了 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>
应该可以。
关于linux - 第一次如何配置postgresql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1471571/