createdb:数据库创建失败:错误:拒绝创建数据库的权限

Son*_*pta 15 postgresql root role permission-denied

我对root用户,超级用户,用户权限感到困惑!我无法在用户"sportu"内创建数据库.以下是我使用的命令: -

athleticu@ip-172-30-4-103:/home/ubuntu$ createdb -T template0 simple_db1
createdb: database creation failed: ERROR:  permission denied to create database
athleticu@ip-172-30-4-103:/home/ubuntu$ sudo createdb -T template0 simple_db1
sudo: unable to resolve host ip-172-30-4-103
createdb: could not connect to database template1: FATAL:  role "root" does not exist
Run Code Online (Sandbox Code Playgroud)

请有人澄清我的疑惑并告诉我应该写些什么!

Son*_*pta 40

嘿,我已经解决了这个问题.你要做的是首先以postgres用户身份登录,如下所示:

$ su postgres

$ psql

postgres=# alter user athleticu createdb;
ALTER ROLE
Run Code Online (Sandbox Code Playgroud)

希望它能帮到你:)

  • 没有密码无法进入“postgres”,但提升到 root 权限允许我:“sudo su postgres” (2认同)

pol*_*con 20

键入\du在psql里,你会看到所有注册用户的列表和什么类型的权限,每个人都有.为了向登录的用户授予权限(例如'user1'),我必须使用以下命令使用该列表中的一个超级用户角色(例如'user2')注销并登录:

    psql -U 'user2' -h localhost 'database2'
Run Code Online (Sandbox Code Playgroud)

其中'database2'是特定超级用户'user2'拥有权限的名称.以超级用户身份登录后,您可以通过以下方式向"user1"授予权限:

    ALTER ROLE user1 WITH CREATEDB 
Run Code Online (Sandbox Code Playgroud)

要么

    ALTER ROLE user1 WITH SUPERUSER
Run Code Online (Sandbox Code Playgroud)

然后再次以user1身份登录,user1现在是超级用户.

这个博客和这个链接很有帮助.


Fer*_*oao 19

目前,这对我有用:

sudo su postgres
psql

ALTER USER username WITH CREATEDB;
\q

exit
Run Code Online (Sandbox Code Playgroud)

来源:更改角色更改用户


dmf*_*fay 6

根用户是系统独立于所述的Postgres一个帐户。只有一个root用户。

一个超级用户是Postgres的访问到所有的账户。可能有许多超级用户。

系统帐户和Postgres账户是不同的东西,但除非你指定一个Postgres的用户名,当你连接到数据库(通过实用工具,比如psqlcreatedbdropdb,或以其他方式),将在希望使用当前系统用户的名称,有一个相应的Postgres帐户同名。该root用户不,默认情况下,在Postgres的一个相应的账户。

在* nix上安装Postgres时,它将同时创建一个名为的超级用户postgres和一个名为的系统用户postgres

因此,当您需要使用Postgres作为内置超级用户执行某些操作时,有两种选择:

  1. 您可能会sudo su - postgres成为postgres 系统用户和执行你的命令(createdbpsql,等)。由于系统用户的名称与数据库超级用户的名称相同,因此您的命令将以适当的帐户连接。
  2. 您可以指定用户名,使其与-U开关一样执行,例如psql -U postgres ...

根据您的Postgres服务器的身份验证设置,可能会要求您使用一种或两种连接方法输入密码。