我以前只使用过MySQL。Postgres对我来说有点不同。我正在尝试使用Postgres.appfor OSX。我有一个来自开发服务器的数据库转储,我想创建正确的用户角色并将数据库导入到我的本地机器,这样我就可以在家里进行开发(无法远程访问数据库)。
我 * 认为 * 我已经创建了用户。\du显示了具有CreateDB权限的相应用户。然后我使用了**\i ~/dump.sql**,它似乎已经导入了数据库。但是,当我使用**\l列出数据库时,它没有显示。因此,我尝试使用psql -U username**登录,但它告诉我“FATAL:数据库 * 用户名 * 不存在。”这不是正确的登录开关吗?这是帮助中所说的。
我对一些简单的事情感到沮丧,所以我感谢任何帮助。使用Postgres.app,我如何创建具有密码的必要用户并导入数据库?感谢任何帮助!
3条答案
按热度按时间lp0sw83n1#
听起来你可能把转储文件加载到了你连接的数据库中。如果你在启动
psql
时没有指定数据库,那么它将是以你的用户名命名的数据库。这在一定程度上取决于创建转储文件时pg_dump
使用的选项。试试看:
我个人建议总是使用
pg_dump -Fc
来创建自定义格式的转储文件,而不是SQL转储文件,因为pg_dump -Fc
比使用psql
来恢复转储文件要容易得多,而且pg_restore
也好得多。disbfnqx2#
Mac用户:如果您在2023年使用Mac操作系统,并且已使用pg_dump实用程序创建了数据库转储
然后为了恢复它使用下面的命令。
首先,使用命令行/terminal手动创建数据库
连接后,使用以下命令创建数据库
现在使用以下命令恢复转储。
对于localhost,请使用127.0.0.1作为数据库主机。
fkaflof63#
-U <username>
对于使用 psql 指定用户名是正确的,但此处的最后一个标记是数据库名称。它解释为您未指定用户,数据库是username。请尝试在后面添加数据库名称,例如psql -U username database
。有关无数开关 psql 支持的更多信息,请参见psql doc。