Createuser: could not connect to database postgres: FATAL: role “tom” does not exist
我正在尝试第一次设置Postgres,我需要创建一个具有读取和创建数据库权限的用户。 但是,当我在终端中使用"createuser username"时,我收到以下消息:
createuser: could not connect to database postgres: FATAL: role"tom" does not exist
Tom是我现在登录的Ubuntu用户帐户。 我正在尝试创建"postgres"的用户名,然后执行"psql -U psql template1",这样我就可以创建一个数据库并为我的Rails应用程序分配一个所有者。
有帮助吗?
你提到了Ubuntu所以我猜你会通过apt从Ubuntu安装PostgreSQL软件包。
如果是这样,
1 2 | sudo -u postgres createuser owning_user sudo -u postgres createdb -O owning_user dbname |
这一切都在Ubuntu PostgreSQL文档中,这是Google首次针对"Ubuntu PostgreSQL"发布的文章,并且涉及众多Stack Overflow问题。
(通过省略诸如操作系统和版本,如何安装PostgreSQL等详细信息,您已经很难回答这个问题了)
请参阅git gist,其中包含说明
运行这个:
1 | sudo -u postgres psql |
要么
1 | psql -U postgres |
在你的终端进入postgres
1 | postgres=# |
跑
1 | CREATE USER new_username; |
注意:在您将要创建的情况下,将new_username替换为您要创建的用户。
1 2 | postgres=# CREATE USER new_username; CREATE ROLE |
由于您希望该用户能够创建数据库,因此您需要将该角色更改为超级用户
1 2 | postgres=# ALTER USER new_username SUPERUSER CREATEDB; ALTER ROLE |
为了确认,一切都很成功,
1 2 3 4 5 6 7 8 9 | 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上遇到了类似的错误:
这是因为我的安装是使用数据库超级用户设置的,其角色名称与您的登录(短)名称相同。
但是一些linux脚本假设超级用户具有传统的角色名称
我是如何解决这个问题的?
如果您使用
要么:
如果您安装了
P.S:用你的PostgreSQL版本替换10.5
1 | sudo -u postgres createuser -s tom |
这应该可以帮助您,因为如果管理员没有为您创建PostgreSQL用户帐户,就会发生这种情况。也可能是您被分配了一个与您的操作系统用户名不同的PostgreSQL用户名,在这种情况下您需要使用-U开关。
您的错误发布在官方文档中。你可以阅读这篇文章。
我已经从那篇文章中复制了你的原因(以及超链接的URL):
This will happen if the administrator has not created a PostgreSQL user account for you. (PostgreSQL user accounts are distinct from operating system user accounts.) If you are the administrator, see Chapter 20 for help creating accounts. You will need to become the operating system user under which PostgreSQL was installed (usually postgres) to create the first user account. It could also be that you were assigned a PostgreSQL user name that is different from your operating system user name; in that case you need to use the -U switch or set the PGUSER environment variable to specify your PostgreSQL user name
为了您的目的,您可以:
1)创建PostgreSQL用户帐户:
1 | sudo -u postgres createuser tom -d -P |
(设置密码的
2)现在您应该能够执行
1-登录默认PostgreSQL用户(postgres)
1 | sudo -u postgres -i |
2-作为postgres用户。使用
1 | [postgres]$ createuser --interactive |
3出境
1 | [postgres]$ exit |
在Windows上使用:
根据需要添加
有关更多选项,请参阅https://www.postgresql.org/docs/current/static/app-createuser.html。
我有同样的问题,我就是这样做的
sudo su - postgres
createuser odoo -U postgres -dRSP #P for password
(你想要的odoo或用户名o给postgres访问权限)
您需要先运行initdb。它将创建数据库集群和初始设置
请参见如何首次配置postgresql?和http://www.postgresql.org/docs/8.4/static/app-initdb.html