欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PostgreSQL口令认证

程序员文章站 2024-01-27 16:08:55
...

Redhat上新装PostgreSQL9.1.3, 用psql连不上, 报错:

psql.bin: FATAL:  password authentication failed for user "postgres"

明明添加了postgres这个用户, 口令也简单的不得了,不可能记错的, 怎么就连不上呢?

 

上网查,有人说修改pg_hba.conf, 把local一行的md5改成trust。一试,果然好使。

 

后来,客户机远程登录,出现同样问题,于是咱如法炮制,再把md5改成了trust,也能登录了,

 

只要获取对方的信任(trust),问题真的就不是问题了,呵。

 

但这种做法对于服务器而言,相当于把自家的锁砸了:设置成trust后,根本就不需要口令。

 

我再google,中间突然打不开链接,于是只好耐心地等了5分钟。来火,但是没办法。网络*和网络搜索,一不小心就成了一对冤家。

 

终于,老天有眼,让我找到了下面一段话:

 

PostgreSQL 数据库口令与任何操作系统用户口令无关。各个数据库用户的口令是存储在 pg_authid 系统表里面。口令可以用 SQL 语言命令 CREATE USERALTER USER 等管理(比如 CREATE USER foo WITH PASSWORD 'secret'; 。缺省时,如果没有明确设置口令,那么存储的口令是空并且该用户的口令认证总会失败。

《PostgreSQL 8.2.3 中文文档,20.2 认证方法》

 

原来是这样啊,pg_authid表里的postgres用户的口令还是空的呢!

我再改,好了,这回是真好了。