使用psql连接PostgreSQL报错角色"edac"不存在如何解决
PostgreSQL psql报错"role 'edac' does not exist"解决思路
首先确认5432端口运行的PostgreSQL实例归属
你同时安装了Homebrew版和Postgres.app两个PostgreSQL,先确认当前运行的实例避免操作错位,执行命令:lsof -i :5432
从输出的COMMAND对应的路径即可判断:Postgres.app的进程路径通常包含/Applications/Postgres.app/前缀,Homebrew版路径通常包含/usr/local/var/postgres(Intel芯片)或/opt/homebrew/var/postgres(Apple芯片)前缀。临时登录PostgreSQL创建缺失角色
报错的核心原因是psql默认会用当前系统用户名(也就是edac)作为登录角色,而你运行的PostgreSQL实例中没有提前创建这个角色。你可以用默认管理员角色登录:- 先尝试用默认管理员角色postgres登录:
psql -U postgres
如果提示socket连接失败,改为走TCP连接登录:psql -U postgres -h localhost - 登录成功后执行SQL创建edac角色,本地开发场景建议给足权限方便使用:
CREATE ROLE edac WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD '自定义你的密码'; - 执行
\q退出psql,再次直接执行psql即可正常登录。
- 先尝试用默认管理员角色postgres登录:
(可选)修复多版本PostgreSQL路径冲突
两个版本共存会导致psql客户端调用混乱,可通过调整PATH优先级固定使用的版本:- 执行
which psql查看当前调用的psql客户端路径,确认是否是你要优先使用的版本对应的路径 - 若要优先使用Postgres.app的客户端,将以下配置添加到你的shell配置文件(/.zshrc或/.bash_profile)中:
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
若要优先使用Homebrew版的客户端,确保Homebrew的bin路径(/usr/local/bin或/opt/homebrew/bin)在PATH最靠前的位置即可 - 执行
source ~/.zshrc(对应zsh)或source ~/.bash_profile(对应bash)使配置生效
- 执行
内容的提问来源于stack exchange,提问作者edwrdcodeu
相关产品推荐
相关产品推荐

