我是postgres新手。
我为 mac 安装了 postgres.app。我在玩 psql 命令时不小心删除了 postgres 数据库。我不知道里面有什么。
我被困在sudo -u postgres psql postgres
sudo -u postgres psql postgres
错误信息:psql: FATAL: role "postgres" does not exist
psql: FATAL: role "postgres" does not exist
$ which psql
/Applications/Postgres.app/Contents/MacOS/bin/psql
这是打印出来的psql -l
psql -l
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ------------+------------+----------+---------+-------+--------------------------- user | user | UTF8 | en_US | en_US | template0 | user | UTF8 | en_US | en_US | =c/user + | | | | | user =CTc/user template1 | user | UTF8 | en_US | en_US | =c/user + | | | | | user =CTc/user (3 rows)
那么我应该采取哪些步骤?删除与 psql 相关的所有内容并重新安装所有内容?
谢谢你们的帮助!
注意:如果您使用自制软件安装了 postgres,请参阅下面 @user3402754 的评论。
请注意,错误消息 不是 关于缺少数据库的,而是关于缺少角色的。在登录过程的后期,它也可能偶然发现丢失的数据库。
但第一步是检查缺失的角色:psql命令的输出是什么\du?在我的 Ubuntu 系统上,相关行如下所示:
psql
\du
List of roles Role name | Attributes | Member of -----------+-----------------------------------+----------- postgres | Superuser, Create role, Create DB | {}
如果没有至少一个角色superuser,那么你有问题:-)
superuser
如果有,您可以使用它来登录。并查看命令的输出:和数据库\l的权限与我的 Ubuntu 系统user上超级用户的权限相同。因此,我认为您的设置简单用作超级用户。所以你可以试试这个命令登录:template0``template1``postgres``user
\l
user
template0``template1``postgres``user
sudo -u user psql user
如果user真的是 DB 超级用户,您可以为他创建另一个 DB 超级用户和一个私有的空数据库:
CREATE USER postgres SUPERUSER; CREATE DATABASE postgres WITH OWNER postgres;
但是由于您的 postgres.app 设置似乎没有这样做,所以您也不应该这样做。简单地调整教程。