918

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

Fatal: role h9uest does not exist

h9uest是我的账号名,我sudo apt-get install在这个账号下是PostgreSQL 9.1。该帐户
仍然存在类似错误。root

4

17 回答 17

952

使用操作系统用户 postgres创建您的数据库 - 只要您没有设置具有与您的同名操作系统用户相对应的必要权限的数据库h9uest角色(在您的情况下):

sudo -u postgres -i

正如这里这里推荐的那样。

然后再试一次。exit以系统用户身份操作完成后键入postgres

或者createuserpostgreswith一样执行单个命令sudo,就像drees在另一个答案中所展示的那样。

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

为了引导数据库系统,一个新初始化的系统总是包含一个预定义的角色。该角色始终是“超级用户”,默认情况下(除非在运行时更改initdb),它将与初始化数据库集群的操作系统用户同名。通常,此角色将命名为postgres. 为了创建更多角色,您首先必须作为这个初始角色进行连接。

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

在手册中阅读有关数据库角色客户端身份验证的信息。

于 2012-08-12T04:13:03.503 回答
326

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

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

简而言之,跑步

sudo -u postgres createuser owning_user

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

于 2013-09-09T23:27:33.327 回答
163
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;

然后启用登录该用户,这样您就可以psql template1从普通$终端运行例如:

ALTER ROLE username WITH LOGIN;
于 2014-05-29T13:35:56.990 回答
114

这对我有用:

psql -h localhost -U postgres
于 2014-08-12T11:39:21.767 回答
106

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

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

sudo -u postgres createuser -s $(whoami); createdb $(whoami)

于 2016-07-18T19:01:27.463 回答
35
psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;
于 2019-04-07T15:08:06.570 回答
19

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

psql -h localhost -U postgres

希望这会有所帮助。

于 2019-01-13T05:07:55.667 回答
17

工作方法,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peer 在这里将对更改为信任
  3. 重新开始,sudo service postgresql restart

  4. 现在试试,psql -U postgres

于 2017-09-10T16:23:48.550 回答
9

对于Windows用户:psql -U postgres

您应该会看到 PostgreSQL 的命令行界面:postgres=#

于 2019-02-08T12:13:28.207 回答
7

在本地用户提示符下,而不是 root 用户提示符下,键入

sudo -u postgres createuser <local username>

然后输入本地用户的密码。

然后输入上一条生成“角色'用户名'不存在”的命令。

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

于 2015-06-21T20:28:12.023 回答
6

我将它安装在 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

于 2018-04-29T02:15:58.527 回答
4

在我的情况下,手动创建数据库集群解决了它。

出于某种原因,当我安装 postgres 时,没有创建“初始数据库”。执行initdb对我有用。

PostgreSQL Wiki中提供了此解决方案- 第一步

初始化数据库

通常将 postgres 安装到您的操作系统会创建一个“初始数据库”并启动 postgres 服务器守护程序运行。如果没有,那么您需要运行 initdb

于 2018-08-28T19:53:31.730 回答
3

我使用 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
于 2021-08-07T08:07:00.907 回答
2

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

例如

倾倒 -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

于 2019-07-25T12:29:13.720 回答
-2

请按照以下步骤操作,它将为您工作:

  1. msfconsole
  2. 键入 db_console
  3. 将向您显示一些信息 选择告诉您制作的信息:db_connect user:pass@host:port.../database对不起,我不记得了,但是就像这样,然后将用户和密码以及主机和数据库替换为database.yml就位中包含的信息:/usr/share/metasploit-framework/config
  4. 你会看见。在后台重建模型缓存。
  5. 更新后键入 apt-get update && apt-get upgrade 重新启动终端并午餐 msfconsole 并且它可以工作,您可以通过输入来检查msfconsole: msf>db_status它是否已连接。
于 2017-08-17T10:20:27.487 回答
-3

请按照以下步骤使 postgres 正常工作。

  1. 在您的终端中,使用以下命令找到 Application Support 文件夹。/Users/[用户名]/库/应用程序支持
  2. 删除应用程序 Postgres。
  3. 重新安装应用程序,它应该可以正常工作。
于 2021-07-11T05:48:42.643 回答
-4

像将端口从 5432 更改为 5433 这样简单的事情对我有用。

于 2020-08-12T00:23:19.047 回答