从终端访问 Postgresql

从终端访问 Postgresql

最近在我的 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。您需要testpsql命令中指定加载数据库:

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 数据库。

希望这对某人有帮助。

相关内容