我正在设置PostgreSQL 9.1。我不能用PostgreSQL做任何事情:不能createdb,不能createuser;所有操作都返回错误消息

Fatal: role h9uest does not exist

h9uest是我的帐户名,我在这个帐户下执行apt-get安装PostgreSQL 9.1。 根帐户仍然存在类似的错误。


使用操作系统用户postgres来创建你的数据库——只要你还没有建立一个数据库角色,该角色具有与你的操作系统用户同名(在你的例子中是h9uest)对应的必要权限:

sudo -u postgres -i

按照这里或这里的建议。

然后再试一次。当以系统用户postgres的身份操作时,输入exit。

或者使用sudo以postgres的形式执行createuser命令,就像drees在另一个答案中演示的那样。

关键是使用与同名数据库角色匹配的操作系统用户通过身份验证授予访问权限。Postgres是初始化数据库集群的默认操作系统用户。手册:

为了引导数据库系统,需要重新初始化 系统中总是包含一个预定义角色。这个角色总是一个 默认情况下(除非在运行initdb时更改) 将与初始化的操作系统用户具有相同的名称 数据库集群。通常,这个角色将被命名为postgres。 为了创建更多的角色,你首先必须像这样连接 最初的作用。

我听说过使用非标准用户名或操作系统用户不存在的奇怪设置。你需要调整你的策略。

阅读手册中的数据库角色和客户端身份验证。


在尝试了许多其他人的解决方案后,都没有成功,这个答案最终帮助了我。

https://stackoverflow.com/a/16974197/2433309

简而言之,跑步

sudo -u postgres createuser owning_user

创建名为owning_user(在本例中为h9uest)的角色。在此之后,您可以在终端上运行rake db:create,使用您设置的任何帐户名,而无需进入Postgres环境。


sudo su - postgres

psql template1

在PGSQL上创建具有“超级用户”权限的角色

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

然后创建用户

CREATE USER username; 
eg. CREATE USER demo;

为用户分配权限

GRANT ROOT TO username;

然后启用该用户登录,这样你就可以从普通的$ terminal运行:psql template1:

ALTER ROLE username WITH LOGIN;

这对我来说很管用:

psql -h localhost -U postgres

在本地用户提示符,而不是根用户提示符中键入

sudo -u postgres createuser <local username>

输入本地用户密码。

然后输入前面的命令,生成“角色‘username’不存在”。

以上步骤为我解决了问题。 如果没有,请发送终端消息进行以上步骤。


使用apt-get安装postgres不会创建用户角色或数据库。

创建超级用户角色和个人用户帐户数据库:

Sudo -u postgres createuser -s $(whoami);createdb whoami(美元)


遵循以下步骤,它将为你工作:

run msfconsole type db_console some information will be shown to you chose the information who tell you to make: db_connect user:pass@host:port.../database sorry I don't remember it but it's like this one then replace the user and the password and the host and the database with the information included in the database.yml in the emplacement: /usr/share/metasploit-framework/config you will see. rebuilding the model cache in the background. Type apt-get update && apt-get upgrade after the update restart the terminal and lunch msfconsole and it works you can check that by typing in msfconsole: msf>db_status you will see that it's connected.


工作方法,

vi /etc/postgresql/9.3/main/pg_hba.conf 本地所有postgres peer 这里将peer改为trust 重启,sudo服务postgresql重启 现在试试,psql -U postgres


我把它安装在macOS上,必须:

cd /Applications/Postgres.app/Contents/Versions/9.5/bin
createuser -U postgres -s YOURUSERNAME
createdb YOURUSERNAME

来源如下:https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641


在我的案例中,手动创建一个DB集群解决了这个问题。

由于某种原因,当我安装postgres时,没有创建“初始DB”。执行initdb对我来说很管用。

这个解决方案在PostgreSQL Wiki -第一步:

initdb 通常情况下,在操作系统中安装postgres会创建一个“初始DB”,并启动postgres服务器守护进程。如果没有,则需要运行initdb


对于Postgres 9.5版本,使用以下命令:

psql -h localhost -U postgres

希望这能有所帮助。


Windows用户:psql -U postgres

然后你应该看到PostgreSQL的命令行界面:postgres=#


psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;

使用——no-owner——no-privileges标记转储和恢复

e.g.

Dump - pg_dump——no-owner——no-privileges——format=c——dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump

恢复- pg_restore——no-owner——no-privileges——format=c——dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump


对我来说,像将端口从5432更改为5433这样简单的操作就可以了。


按照以下步骤让postgres工作。

在终端中,使用以下命令找到应用程序支持文件夹。 /Users/[用户名]/库/应用程序支持 删除应用程序Postgres。 重新安装应用程序,它应该工作得很好。


我用docker-compose做了健康检查。

healthcheck:
  test: ['CMD-SHELL', 'pg_isready']
  interval: 5s
  timeout: 5s
  retries: 5

如果你也有这样的更改用户:

healthcheck:
  test: ['CMD-SHELL', 'pg_isready -U postgres'] # <<<---
  interval: 5s
  timeout: 5s
  retries: 5

对于使用docker并正确遵循官方文档说明的用户,如果仍然遇到此问题,请重新启动窗口并重试。


sudo -u postgres createuser --superuser $USER

sudo -u postgres createdb $USER

这绝对适合你。