我正在尝试在Debian 7上创建一个新的Postgres数据库和超级用户。
但是,一旦我创建了新数据库,我似乎无法连接到我的新数据库。
这就是我所做的:
$ sudo su - postgres
postgres@:~$ createdb prescribing
postgres@$ psql
postgres=# create user prescribing with password 'mypassword';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE prescribing to prescribing;
GRANT
postgres=# exit\q
could not save history to file "/var/lib/postgresql/.psql_history": No such file or directory
postgres@:~$ psql -d prescribing -U prescribing
psql: FATAL: Peer authentication failed for user "prescribing"
我做错了什么?
我不确定错误是否与缺少历史文件有关,或者是否是Unix用户和数据库用户之间的一些我不完全理解的交互。
我也试过psql -U prescribing -d prescribing -W
,看看我是否可以让它来问我密码,但它没有帮助。
更新:以下是pg_hba.conf
的内容:
# 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
答案 0 :(得分:2)
使用'peer'身份验证,unix用户必须匹配数据库用户。您正尝试以“处方”用户身份进行连接,但以linux“postgres”用户身份登录。由于这种不匹配,它不起作用。
选择'peer'身份验证是因为您在本地连接(通过unix套接字),而pg_hba.conf指定使用'peer'。如果将“本地”条目更改为md5,则可以使用密码验证。或者,您可以通过TCP / IP地址127.0.0.1进行连接,例如:
psql -h 127.0.0.1 -U prescribing -d prescribing