繁体   English   中英

Createuser:无法连接到数据库 postgres:致命:角色“tom”不存在

[英]Createuser: could not connect to database postgres: FATAL: role "tom" does not exist

我第一次尝试设置 Postgres,我需要创建一个具有读取和创建数据库权限的用户。 但是,当我使用:

createuser username

在我的终端中,我收到以下消息:

createuser:无法连接到数据库 postgres:致命:角色“tom”不存在

Tom 是我现在登录的 Ubuntu 用户帐户。 我正在尝试创建一个“postgres”的用户名,然后执行psql -U psql template1以便我可以创建一个数据库并为我的 Rails 应用程序分配一个所有者。

你提到了 Ubuntu,所以我猜你是通过 apt 从 Ubuntu 安装 PostgreSQL 包的。

如果是这样,则postgres PostgreSQL 用户帐户已经存在,并且配置为可通过pg_hba.conf unix 套接字的peer身份验证进行访问。 您可以通过以postgres unix 用户身份运行命令来访问它,例如:

sudo -u postgres createuser owning_user
sudo -u postgres createdb -O owning_user dbname

这是所有在Ubuntu PostgreSQL文档中的全部内容,该文档是“Ubuntu PostgreSQL”的第一个 Google 热词,并且在许多 Stack Overflow 问题中都有涉及。

(通过省略诸如操作系统和版本,您如何安装 PostgreSQL 等详细信息,您使这个问题更难回答。)

在此处查看 git gist 和说明

运行这个:

 sudo -u postgres psql

要么

psql -U postgres

在你的终端进入 postgres

注意:如果您使用的是 Mac 并且上面的两个命令都失败了,请跳转到下面关于 Mac 的部分

postgres=#

跑步

CREATE USER new_username;

注意:将 new_username 替换为您要创建的用户,在您的情况下将是 tom。

postgres=# CREATE USER new_username;
CREATE ROLE

由于您希望该用户能够创建数据库,因此您需要将角色更改为超级用户

postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE

为了确认,一切都成功了,

postgres=# \du
                         List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
new_username     | Superuser, Create DB                           | {}
postgres         | Superuser, Create role, Create DB, Replication | {}
root             | Superuser, Create role, Create DB              | {}

postgres=# 

更新/修改(对于 Mac):

我最近在我的 Mac 上遇到了类似的错误:

psql: FATAL: role "postgres" does not exist

这是因为我的安装是使用数据库超级用户设置的,其角色名称与您的登录(短)名称相同。

但是一些 linux 脚本假定超级用户具有postgres的传统角色名称

我是如何解决这个问题的?

如果您安装了homebrew运行:

/usr/local/opt/postgres/bin/createuser -s postgres

如果您使用的是特定版本的 postgres,请说10.5然后运行:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres

要么:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username

要么:

/usr/local/opt/postgresql@11/bin/createuser -s postgres

如果你安装了postgres.app for Mac 运行:

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

PS:用你的 PostgreSQL 版本替换 10.5

sudo -u postgres createuser -s tom 

这应该对您有所帮助,因为如果管理员没有为您创建 PostgreSQL 用户帐户,就会发生这种情况。 也可能是您被分配了一个与操作系统用户名不同的 PostgreSQL 用户名,在这种情况下,您需要使用 -U 开关。

1- 以默认 PostgreSQL 用户 (postgres) 登录

sudo -u postgres -i

2- 作为 postgres 用户。 使用createuser命令添加一个新的数据库用户

[postgres]$ createuser --interactive

3-出口

[postgres]$ exit

您的错误已发布在官方文档中。 您可以阅读这篇文章

我从那篇文章中复制了你的原因(并超链接了 URL):

如果管理员尚未为您创建 PostgreSQL 用户帐户,则会发生这种情况。 (PostgreSQL 用户帐户不同于操作系统用户帐户。)如果您是管理员,请参阅第 20 章以获取创建帐户的帮助。 您需要成为安装 PostgreSQL 的操作系统用户(通常是 postgres)才能创建第一个用户帐户。 也可能是您被分配了一个与您的操作系统用户名不同的 PostgreSQL 用户名; 在这种情况下,您需要使用 -U 开关或设置 PGUSER 环境变量来指定您的 PostgreSQL 用户名

为了您的目的,您可以执行以下操作:

1) 创建一个 PostgreSQL 用户帐户:

sudo -u postgres createuser tom -d -P

(设置密码的-P选项;允许为您的用户名 'tom' 创建数据库的-d选项。请注意,'tom' 是您的操作系统用户名。这样,您可以执行 PostgreSQL 命令而无需sudo ing。 )

2) 现在您应该可以执行createdb和其他 PostgreSQL 命令了。

我有同样的问题,我只是这样做

须藤 su - postgres

createuser odoo -U postgres -dRSP #P 用于密码( odoo或您想要授予 postgres 访问权限的用户名

在 Windows 上使用:

C:\\PostgreSQL\\pg10\\bin>createuser -U postgres --pwprompt <USER>

根据需要添加--superuser--createdb

有关更多选项,请参阅https://www.postgresql.org/docs/current/static/app-createuser.html

如果您不想更改身份验证方法 (ident) 并弄乱pg_hba.conf,请使用以下命令:

以默认用户身份首次登录

 sudo su - postgres

然后访问 psql 并创建一个与您登录的用户同名的用户

postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;

您可以使用相应的角色验证您的用户

postgres=#  \du

在此之后,您可以创建您的数据库并验证它

psql -d dbName
\l
\q

对于 Linux,您可以激活 SUPERUSER 以启用创建数据库,如下所示:

  1. Go 到端子/外壳

  2. 使用sudo -u postgres -i进入 postgres

现在你的终端就像“postgres@anish-Latitude-E7450:~$”

  1. 使用psql进入 postgres 终端

现在你的终端就像“postgres=#”

  1. 输入alter user [postgres_user_name] createdb;

现在用户将有权创建数据库。

  1. 使用 '\q' 退出 psql

  2. 使用exit注销 postgres

希望这对您有所帮助。

您需要先运行 initdb。 它将创建数据库集群和初始设置

请参阅如何首次配置 postgresql? http://www.postgresql.org/docs/8.4/static/app-initdb.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM