(Windows)使用login,createdb和createrole在postgres9.4中创建新用户,但无法登录?

时间:2015-10-06 10:42:18

标签: postgresql

C:\Users\Thomas>psql -U Thomas -h localhost
Password for user Thomas:
psql: FATAL:  password authentication failed for user "Thomas"

我可以使用posgres角色登录。已将密码重新分配给用户托马斯五次......它只是没有坐下。这里可能出现什么问题?

编辑: 如果我尝试以“托马斯”的身份登录错误变成:

C:\Users\Thomas>psql -U thomas -h localhost
Password for user thomas:
psql: FATAL:  database "thomas" does not exist

\ du列出如下:

 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}
 thomas    | Create role, Create DB                         | {}

编辑2: 如果我在数据库上连接thomastest to thomas 然后可以登录,但在命令行中需要额外的信息:

C:\Users\Thomas>psql -d thomastest -U thomas -h localhost

是否可以将此设置为此用户的默认登录名?

2 个答案:

答案 0 :(得分:1)

您需要查看pg_hba.conf文件。 psql使用域套接字连接到您的数据库,这与程序从外部进行时的操作不同。在安全声明的最顶层,您可能有类似的内容:

local all all ident

将其更改为:

local all all md5

或者,如果您认为这不是安全问题:

local all all trust

md5会提示输入密码。 trust只会让你进入。

哦,添加-h kinda 的原因是因为使用-h,它使用pg_hba.conf中的host条目(而不是本地套接字) ),可能设置为md5

修改pg_hba时,您需要退回postgres或运行pg_ctl -D (whatever) reload

答案 1 :(得分:1)

  

是否可以将此设置为此用户的默认登录名?

是的,通过设置必要的environment variables

  • PGUSER表示默认用户
  • PGDATABASE用于默认数据库