我是postgres的新手。
我安装了postgres。我在玩psql命令,我不小心掉了postgres数据库。我不知道里面有什么。
我目前正在制作一个教程:http://www.rosslaird.com/blog/building-a-project-with-mezzanine/
我被困在sudo -u postgres psql postgres
错误信息:psql: FATAL: role "postgres"不存在
$ which PSQL
/Applications/Postgres.app/Contents/MacOS/bin/psql
这是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的评论。
请注意,错误消息不是关于缺少数据库,而是关于缺少角色。在稍后的登录过程中,它可能还会发现丢失的数据库。
但是第一步是检查缺少的角色:命令\du在psql中的输出是什么?在我的Ubuntu系统中,相关的行是这样的:
List of roles
Role name | Attributes | Member of
-----------+-----------------------------------+-----------
postgres | Superuser, Create role, Create DB | {}
如果没有至少一个超级用户的角色,那么你有一个问题:-)
如果有的话,你可以用它来登录。查看\l命令的输出:template0和template1数据库的用户权限与我的Ubuntu系统中超级用户postgres的权限相同。我认为你的设置简单地使用user作为超级用户。所以你可以试试这个命令来登录:
sudo -u user psql user
如果user是数据库超级用户,你可以为他创建另一个数据库超级用户和一个私有的空数据库:
CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;
但自从你毕业后。应用程序设置似乎不这样做,你也不应该这样做。简单调整教程。
MAC:
安装自酿酒
酿造安装postgres
initdb /usr/local/var/postgres
/usr/local/ cellar /postgresql/<version>/bin/createuser -s postgres或/usr/local/opt/ postgress /bin/createuser -s postgres只使用最新版本。
手动启动postgres服务器:pg_ctl -D /usr/local/var/postgres start
在启动时启动服务器
mkdir -p ~/库/启动代理
Ln -sfv /usr/local/opt/postgresql/*。plist ~ /图书馆/ LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mx .postgresql.plist
现在,它已经设置好了,使用psql -U postgres -h localhost或使用PgAdmin进行GUI登录。
默认情况下,postgres用户没有任何登录密码。
查看此站点以获取更多类似文章:https://medium.com/@Nithanaroy/ installing-postgre-on -mac-18f017c5d3f7
关键是“我安装了postgres。mac版App。”此应用程序使用数据库超级用户(角色名与您的登录名(简称)相同)设置本地PostgreSQL安装。
当Postgres。app首先启动,它创建$USER数据库,
当没有指定时,它是PSQL的默认数据库。的
默认用户为$ user,没有密码。
一些脚本(例如,在Linux系统上使用pgdump创建的数据库备份)和教程将假定超级用户具有传统的角色名postgres。
你可以让你的本地安装看起来更传统一点,并通过执行一次来避免这些问题:
/Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres
这将使那些FATAL: role "postgres"不存在消失。