You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac下PostgreSQL密码认证失败,尝试多种方案仍未解决求助

解决brew安装PostgreSQL后createdb密码验证失败的问题

我之前也碰到过一模一样的坑,brew安装PostgreSQL后经常会出现系统用户和PostgreSQL内部用户不匹配的情况,导致连接认证失败。结合你的报错信息,给你几个具体的排查和解决步骤:

1. 确认PostgreSQL的运行用户与初始化参数

首先检查你initdb时是否指定了正确的用户:

  • 如果你当时用了类似initdb -U postgres -D /usr/local/var/postgres这样的命令,说明PostgreSQL的超级用户是postgres,而不是你的系统用户macuser。
  • 可以通过ps aux | grep postgres查看PostgreSQL进程的运行用户,确认实际生效的用户是谁。

2. 临时调整认证配置排查问题

brew安装的PostgreSQL配置文件pg_hba.conf路径通常是:

  • Intel芯片:/usr/local/var/postgres/pg_hba.conf
  • M1/M2芯片:/opt/homebrew/var/postgres/pg_hba.conf

打开这个文件,找到local连接的配置行,默认可能是:

local   all             all                                     md5

临时改成trust(允许本地无密码连接):

local   all             all                                     trust

然后重启PostgreSQL服务:

brew services restart postgresql

这时候再尝试createdb,如果能成功,说明问题出在用户认证配置上。

3. 匹配系统用户与PostgreSQL用户

情况A:想让系统用户macuser拥有数据库权限

如果希望用当前系统用户直接操作数据库,需要在PostgreSQL中创建对应用户并赋予权限:

  1. 直接进入PostgreSQL命令行:psql
  2. 创建用户并设置密码:
CREATE USER macuser WITH PASSWORD '你的密码';
ALTER USER macuser CREATEDB; -- 赋予创建数据库的权限
  1. 把pg_hba.conf改回md5认证,重启服务,之后用createdb就可以正常连接了。

情况B:使用initdb指定的用户操作数据库

如果你initdb时指定了比如postgres用户,那么创建数据库时需要明确指定该用户:

createdb -U postgres 你的数据库名

进入命令行时也需要指定:

psql -U postgres

4. 为什么会出现这个错误?

createdb默认会使用当前系统用户(也就是你的macuser)去连接PostgreSQL的template1模板库,但如果这个用户在PostgreSQL中不存在,或者没有设置正确的密码,就会触发FATAL: password authentication failed for user "macuser"的报错。

记得最后一定要把pg_hba.conf的认证方式改回md5或者更安全的scram-sha-256,不要一直用trust,避免安全风险。

内容的提问来源于stack exchange,提问作者CoderLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:31:34