我正在尝试第一次设置Postgres,并且我需要创建一个具有读取和创建数据库权限的用户。但是,当我使用以下命令时:
createuser username
在我的终端中,我收到以下消息:
创建用户:无法连接到数据库postgres:致命:角色"tom“不存在
Tom是我现在登录的Ubuntu用户帐户。我正在尝试创建一个用户名"postgres“,然后执行一个psql -U psql template1
,这样我就可以创建一个数据库,并为我的Rails应用程序分配一个所有者。
发布于 2013-06-07 08:04:48
你提到了Ubuntu,所以我猜你从Ubuntu到apt安装了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“的第一个命中,并在许多堆栈溢出问题中涵盖。
(您忽略了操作系统和版本、如何安装PostgreSQL等细节,这使得回答这个问题变得更加困难。)
发布于 2016-05-28 23:07:23
See git gist with instructions here
运行以下命令:
sudo -u postgres psql
或
psql -U postgres
才能进入postgres
NB:如果你在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
附言:将10.5替换为您的PostgreSQL版本
发布于 2013-08-08 02:42:39
sudo -u postgres createuser -s tom
这应该会对您有所帮助,因为如果管理员尚未为您创建PostgreSQL用户帐户,则会发生这种情况。也可能是为您分配的PostgreSQL用户名与您的操作系统用户名不同,在这种情况下,您需要使用-U开关。
https://stackoverflow.com/questions/16973018
复制相似问题