psql无法读取.pgpass,需以led用户登录PostgreSQL求助
解决psql默认使用指定用户登录的问题
首先,直接运行psql时,它会默认使用当前操作系统用户(也就是你的vagrant用户)作为PostgreSQL角色名登录,这就是为什么你会看到FATAL: role "vagrant" does not exist的错误。要让psql默认用led用户登录,你可以试试下面几种方法:
方法1:设置环境变量
通过设置PGUSER环境变量,就能指定默认的PostgreSQL用户名:
- 临时生效(仅当前终端会话):
执行后直接运行export PGUSER=ledpsql,就会自动用led用户登录。 - 永久生效(每次打开终端都生效):
把上面的命令添加到你的shell配置文件中:- 如果你用bash,编辑
~/.bashrc - 如果你用zsh,编辑
~/.zshrc
添加完成后执行source ~/.bashrc(或对应配置文件),让修改立即生效。
- 如果你用bash,编辑
如果还想默认指定主机和数据库名,可以同时设置其他环境变量:
export PGHOST=127.0.0.1 export PGDATABASE=led
这样直接运行psql,就会自动使用-U led -h 127.0.0.1 led的参数连接数据库。
方法2:使用.psqlrc配置文件
PostgreSQL会读取用户主目录下的.psqlrc文件作为启动配置,你可以在里面设置默认参数:
- 创建或编辑
~/.psqlrc文件:nano ~/.psqlrc - 添加以下内容:
要是需要默认指定主机和数据库,也可以补充:\set USER led\set HOST 127.0.0.1 \set DBNAME led - 保存退出后,下次运行
psql就会自动应用这些默认设置。
方法3:确保.pgpass文件权限正确
虽然你当前的问题是默认用户不对,但要让.pgpass文件生效(自动填充密码),必须确保它的权限是600,否则PostgreSQL会忽略这个文件:
chmod 600 ~/.pgpass
设置后,当你用led用户登录时,就不需要手动输入密码了。
内容的提问来源于stack exchange,提问作者Sudheer
相关产品推荐
相关产品推荐

