Mac M1(Monterey)环境下psql无法启动问题求助
解决PostgreSQL@14角色不存在的问题
出现FATAL: role "johndoe" does not exist错误,是因为PostgreSQL默认需要一个与系统当前用户名同名的登录角色,而你的数据库实例中未创建该角色。重装未解决问题是因为brew卸载时通常不会删除数据目录,重装后复用了原有无对应角色的数据库。
可以通过以下步骤解决:
- 停止PostgreSQL服务:
brew services stop postgresql@14
- 重新初始化数据库(替换
johndoe为你的系统用户名):
initdb /usr/local/var/postgresql@14 -E utf8 --username=johndoe
该命令会创建包含指定角色的新数据库实例,/usr/local/var/postgresql@14是brew安装postgresql@14的默认数据存储目录。
- 重启服务:
brew services start postgresql@14
- 验证连接:
psql
此时应该能正常进入PostgreSQL命令行。
备选方案(无需重新初始化):
如果不想重置现有数据,可手动创建角色:
- 以默认postgres角色登录(若该角色存在):
psql -U postgres
- 在PostgreSQL命令行中创建角色并赋予权限:
CREATE ROLE johndoe WITH LOGIN PASSWORD 'your_secure_password'; ALTER ROLE johndoe CREATEDB; -- 可选,允许该角色创建数据库
- 退出后使用新角色登录:
psql -U johndoe
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

