pgAdmin 4创建角色joe后,psql -U joe登录失败求助
解决PostgreSQL角色登录提示数据库不存在的问题
错误原因
PostgreSQL的psql命令有个默认行为:当你只指定用户名(-U joe)登录时,会自动尝试连接和用户名同名的数据库。你创建了joe角色,但没创建对应的joe数据库,所以触发了FATAL: database "joe" does not exist的错误。
解决方法
方法1:登录时指定已存在的数据库
直接在命令里加上要连接的现有数据库(比如默认的postgres数据库),执行:
psql -U joe -d postgres
输入正确密码后即可正常登录,进入postgres数据库的交互环境。
方法2:创建与角色同名的数据库
因为joe拥有createdb权限,先以postgres角色登录(直接执行psql即可),然后执行创建数据库的命令:
CREATE DATABASE joe;
创建完成后,再执行psql -U joe就能直接登录到joe数据库。
方法3:设置默认数据库的环境变量
在Windows终端临时设置默认连接的数据库,执行:
set PGDATABASE=postgres
之后再执行psql -U joe,会默认连接postgres数据库,无需每次手动指定-d参数。如果想永久生效,可以在系统环境变量中添加PGDATABASE=postgres。
内容的提问来源于stack exchange,提问作者Bondifrench
相关产品推荐
相关产品推荐

