SpringBoot新手连接PostgreSQL的student库:IntelliJ报密码错但Shell可正常连接
连接异常排查&解决方法
- 问题本质
Shell能正常连库、但IDEA数据源连接反复报密码错,核心原因是两类连接触发了PostgreSQL不同的认证规则,绝大多数情况和IDEA本身的程序缺陷无关。 - 根因定位
Shell下正常连库一般走本地Unix套接字的peer认证规则:只要PG账号和当前系统登录用户名一致,就能免密直接登录,根本不需要设置数据库密码。
而IDEA发起的数据库连接走TCP协议,会匹配pg_hba.conf里针对TCP连接的规则段:如果这部分规则设为md5或scram-sha-256密码认证,就会强制要求输入合法的数据库密码。
这种配置差异刚好对应你碰到的两个报错:- 在IDEA里留空密码时,JDBC驱动直接抛出
null value for password错误 - 随便填密码连接时,因为PG内部存的账号密码哈希根本不匹配,直接提示密码错误
- 在IDEA里留空密码时,JDBC驱动直接抛出
- 可选解决方法(按本地开发场景推荐优先级排序)
- 给IDEA要用的PG账号设固定密码
用Shell登进PG后,执行对应SQL设置密码:ALTER USER 你在IDEA里填的PG账号名 WITH PASSWORD '自定义的开发环境密码';
配置完直接在IDEA数据源页填这个账号、对应密码、正确的端口号(默认5432)和数据库名,就能正常连上。后面写SpringBoot项目的时候,直接复用这组账号密码配数据源就行,不会再卡连接。 - 改本地TCP连接的认证规则(适合懒得设密码的本地开发场景)
打开pg_hba.conf,把对应TCP连接段(一般是127.0.0.1/32、::1/128开头的规则行)的认证方式从scram-sha-256/md5改成trust,保存后执行pg_ctl reload让配置即时生效,这时候IDEA连本地库就不需要校验密码了。注意:trust认证只适合本地开发用,生产环境绝对不能开,安全风险极高。
- 核对连接账号是不是搞混了
不少人会在IDEA里错填PG默认的超级账号postgres,但Shell下实际用的是自己建的普通业务账号,两个账号的密码规则完全独立,自然会校验失败。连接前先确认IDEA里填的账号和Shell下能正常登的账号是同一个。
- 给IDEA要用的PG账号设固定密码
内容的提问来源于stack exchange,提问作者ThandoBhebhe
相关产品推荐
相关产品推荐

