Postgresql用户密码过期的解决(一)

    xiaoxiao2021-03-25  109

    今天晚上突然数据库连接不上了,检查Postgresql的日志,发现如下一句:

    FATAL: password authentication failed for user "xxx" DETAIL: User "xxx" has an expired password. Connection matched pg_hba.conf line 84: "local all all password"

    意思是之前设置了xxx用户的密码过期时间,现在时间到了…

    解决办法如下:

    1.必须可以直接登录到数据库所在的那台物理机器上.

    2.将pg_hba.conf(我mac下的路径为:/usr/local/var/postgres/pg_hba.conf)中127.0.0.1那行的认证方式改为trust.

    3.用pgadmin以管理员登录进数据库,此时应该不需要输入密码

    4.修改对应用户密码的过期时间,你也可以设置永不过期:

    5.别忘了将第一步的trust改回password,或任何原先的认证方式

    还可以用psql看用户密码的过期时间:

    1.将pg_hba.conf中的local一行最后改为trust

    2.用psql -U admin_name postgres 登录,此时应该也不需要密码

    3.输入\d pg_user查看字段

    postgres=# \d pg_user View "pg_catalog.pg_user" Column | Type | Modifiers -------------+---------+----------- usename | name | usesysid | oid | usecreatedb | boolean | usesuper | boolean | usecatupd | boolean | userepl | boolean | passwd | text | valuntil | abstime | useconfig | text[] |

    4.输入select * from pg_user; 查看valuntil行的过期时间,注意别忘了命令最后的;号!

    postgres=# select * from pg_user; usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valuntil | useconfig ---------+----------+-------------+----------+-----------+---------+----------+----------+----------- vvv | 12345 | t | f | f | f | ******** | | aaa | 10000 | t | t | t | t | ******** | | bbb | 15034 | t | f | f | f | ******** | infinity | (3 rows)

    如上所示infinity表示永不过期.

    5.别忘了将pg_hba.conf文件内容还原哦.

    大熊猫侯佩 认证博客专家 Swift Objective-C Xcode 非自由程序员,博客认证专家。汇编板块版主, 其他开发语言大版版主。对App、以及Cocos2D、SpriteKit游戏开饶有兴趣。目前常用的语言是ObjC、Swift、Ruby等。不过看到编程艺术、ASM、逆向和C时依然欲罢不能。虽然不是,但喜欢黑客的思维和哲学,认为社会工程学很酷,但还没有实际用来撩过妹。
    转载请注明原文地址: https://ju.6miu.com/read-24017.html

    最新回复(0)