最近在我的 Raspberry Pi 上设置 Postgresql 后,我创建了一个不是高级用户的帐户。最初为了设置它,我输入了
psql
从终端然后执行
createuser pi -P --interactive
我回复 N 表示超级用户 Y 表示创建数据库 Y 表示创建新角色,然后。
Create database test;
当我现在尝试简单地使用 psql 时
psql
我明白了
pi@raspberrypi:~ $ psql psql: FATAL: database "pi" does not exist
我可以去 psql test 并在那里创建数据库,但我想知道是什么导致了这种行为。
终端是否自动将 Pi 用户凭据传递给 postgresql,还是使用系统的 Pi 帐户登录?
答案1
您没有显示psql
尝试用来连接 Postgresql 服务器的命令。不过,如果没有这些信息,我可能可以解释发生了什么。
如果您未在psql
命令中指定用户,它会尝试使用您当前登录的用户名。如果不指定数据库,它将尝试加载与用户同名的数据库。
您收到的错误database "pi" does not exist
表明它无法加载数据库pi
。在您发布的问题中,您提到创建用户名pi
和数据库test
。您需要test
在psql
命令中指定加载数据库:
psql --dbname=test
如果您没有以pi
用户身份登录,则需要在psql
命令中传递用户名:
psql --username=pi --dbname=test
如果这些都不起作用,请psql
在您的问题中发布您的命令,我们可以更好地了解发生了什么。
答案2
我通过以下方式解决了这个问题: sudo su postgres
sql
创建数据库 pi;
\q
出口
然后从 pi 帐户,当你只使用 psql 时,它会让你进入 pi 数据库
否则,当你执行psql时,你必须指定要连接的数据库(如果你只执行psql,它认为你想连接到数据库pi(你的unix用户名)
如果您想从 pi 帐户连接到该测试数据库:
psql --dbname=测试
这样 psql 就不会尝试将您连接到 pi 数据库。
希望这对某人有帮助。