psql:致命:angular色“postgres”不存在

我是一个postgres新手。

我安装了mac的postgres.app。 我正在玩psql命令,我不小心丢弃了postgres数据库。 我不知道里面有什么

我目前正在制作一个教程: http : //www.rosslaird.com/blog/building-a-project-with-mezzanine/

而我卡在sudo -u postgres psql postgres

错误消息: psql: FATAL: role "postgres" does not exist

$哪个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相关的东西,并重新安装一切?

谢谢你的帮助!

请注意,错误消息不会谈论缺less的数据库,它会谈论缺less的angular色。 后来在login过程中,它可能会偶然发现丢失的数据库。

但是,第一步是检查缺less的angular色:命令\du psql中的输出是什么? 在我的Ubuntu系统上,相关的行看起来像这样:

  List of roles Role name | Attributes | Member of -----------+-----------------------------------+----------- postgres | Superuser, Create role, Create DB | {} 

如果superuser没有至less一个angular色,那么你有一个问题:-)

如果有的话,你可以使用它来login。 看看你的\l命令的输出: template0template1数据库上的user权限与我的Ubuntu系统上超级用户postgres的权限相同。 所以我认为你的设置简单地使用user作为超级用户。 所以你可以试试这个命令来login:

 sudo -u user psql user 

如果user真的是数据库超级用户,则可以为他创build另一个数据库超级用户和一个私有的空数据库:

 CREATE USER postgres SUPERUSER; CREATE DATABASE postgres WITH OWNER postgres; 

但是因为你的postgres.app安装似乎没有这样做,你也不应该这样做。 简单的修改教程。

关键是“我安装了mac的postgres.app”。 此应用程序使用数据库超级用户设置本地PostgresSQL安装,其angular色名称与您的login(简称)名称相同。

当Postgres.app首次启动时,它会创build$ USER数据库,这是没有指定psql的默认数据库。 默认用户是$ USER,没有密码。

一些脚本(例如,在Linux pgdump上使用pgdump创build的数据库备份)和教程将假定超级用户具有传统的postgresangular色名称。

你可以让你的本地安装看起来更传统一些,并通过一次性避免这些问题:

 /Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres 

这将使那些致命的:“postgres”的angular色不存在消失。

对于MAC:

  1. 安装自制软件
  2. brew install postgres
  3. initdb /usr/local/var/postgres
  4. /usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres

在启动时启动服务器

  • mkdir -p ~/Library/LaunchAgents
  • ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
  • launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

现在,它已经build立了,使用psql -U postgres -h localhostlogin,或者使用PgAdmin作为GUI。

默认情况下,用户postgres将不会有任何login密码。

查看本网站的更多文章,例如: https : //sites.google.com/site/nitinpasumarthy/blog/installingpostgresonmac

对我来说,这个代码工作:

 /Applications/Postgres.app/Contents/Versions/9.4/bin/createuser -s postgres 

它来自这里: http : //talk.growstuff.org/t/fatal-role-postgres-does-not-exist/216/4

首先你需要创build一个用户:

 sudo -u postgres createuser --superuser $USER 

创build数据库之后:

 sudo -u postgres createdb $USER 

$USER 更改 $USER您的系统用户名。

你可以在这里看到完整的解决scheme。

在命令行上运行这个应该可以解决这个问题

/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>

丢弃postgres数据库并不重要。 这个数据库最初是空的,它的目的只是让postgres用户有一种“家”来连接,如果需要的话。

不过你可以用SQL命令CREATE DATABASE postgres;重新创build它CREATE DATABASE postgres;

请注意,问题中提到的教程不是用postgres.app编写的。 一般来说,与Unix上的PostgreSQL相反, postgres.app尝试看起来像一个普通的应用程序,而不是由一个专门的postgres用户运行的服务。 postgres.app由您自己的帐户运行和pipe理。

因此,不要使用以下命令: sudo -u postgres psql -U postgres ,它更多的是以postgres.app的精神来发布: psql ,它会自动连接到一个匹配用户名的数据库,同样的名字恰好是超级用户,所以它可以做任何权限明智的。

对于它的价值,我已经安装了Ubuntu和许多软件包,并与之发生冲突。

对我来说正确的答案是:

 sudo -i -u postgres-xc psql 

由于OpenSSL冲突,在使用Homebrew构buildPostgreSQL之后,我遇到了这个问题。

我build议如下:

重新安装OpenSSL

 brew remove openssl brew install openssl 

强制build立OpenSSL的符号链接

 brew link --force openssl 

创build新的angular色 我应该注意到,出于安全目的,我的设置涉及一个与我的标准帐户分开的pipe理员帐户。 下面的帐户可以根据需要进行调整。

 sudo -u <administrator account> createuser <standard account> -d -P 

此方法将使用<standard account>作为名称创build数据库,并为其设置密码。 如果不需要,最后的标志可以被删除。

最后,postgresql操作(如createdb <dbname>可以在不发生FATAL错误的情况下使用。

 createuser postgres --interactive 

或者只是用一个超级用户postgresl

 createuser postgres -s 

这是唯一为我解决的问题:

 createuser -s -U $USER 

我不认为在这里需要sudo,因为psql -l返回一个数据库列表。 这告诉我,initdb是在用户的当前用户下运行,而不是在postgres用户下运行。

你可以:

 psql 

并继续教程。

我会build议AH的创buildpostgres用户和数据库的一般要点,因为许多应用程序可能会希望这存在。

简单的解释:

PostgreSQL不能以对操作系统的pipe理访问权限运行。 相反,它与普通用户一起运行,为了支持对等身份validation(询问正在尝试连接的操作系统),它将与运行初始化过程的用户创build一个用户和数据库。 在这种情况下,这是你的普通用户。

在前一天brew services stop postgresql的时候,我遇到了执行brew services stop postgresql问题。
下一天: brew services start postgresql将无法正常工作。 这是因为当你使用自制软件安装时显示。 postgresql使用launchd …当您的计算机开机时加载。

parsing度:
brew services start postgresql
重启你的电脑。