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

Postgresql createdb:数据库创建失败:错误:创建数据库的权限被拒绝,postgresql,root,permission-denied,role,Postgresql,Root,Permission Denied,Role,我对根用户、超级用户、用户和权限感到非常困惑!我无法在用户“athleticu”内创建数据库。以下是我使用的命令:- athleticu@ip-172-30-4-103:/home/ubuntu$createdb-T template0 simple_db1 createdb:数据库创建失败:错误:创建数据库的权限被拒绝 athleticu@ip-172-30-4-103:/home/ubuntu$sudo createdb-T template0 simple_db1 sudo:无法解析主机i

我对根用户超级用户用户权限感到非常困惑!我无法在用户“athleticu”内创建数据库。以下是我使用的命令:-

athleticu@ip-172-30-4-103:/home/ubuntu$createdb-T template0 simple_db1
createdb:数据库创建失败:错误:创建数据库的权限被拒绝
athleticu@ip-172-30-4-103:/home/ubuntu$sudo createdb-T template0 simple_db1
sudo:无法解析主机ip-172-30-4-103
createdb:无法连接到数据库模板1:致命:角色“根”不存在

请有人澄清我的疑问,告诉我应该写什么

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

超级用户是Postgres中的一个帐户,可以访问所有内容。可能有许多超级用户

系统帐户和Postgres帐户是不同的,但除非在连接到数据库时指定Postgres用户名(通过诸如
psql
createdb
dropdb
等实用程序),否则,它将使用当前系统用户名,希望有一个同名的对应Postgres帐户。默认情况下,根用户在Postgres中没有相应的帐户

在*nix上安装Postgres时,它会创建名为
Postgres
的超级用户和名为
Postgres
的系统用户

因此,当您需要使用Postgres作为内置超级用户时,您有两个选择:

  • 您可以
    sudo su-postgres
    成为
    postgres
    系统用户并执行您的命令(
    createdb
    psql
    等)。由于系统用户与数据库超级用户具有相同的名称,因此您的命令将作为相应的帐户进行连接
  • 您可以使用
    -U
    开关指定要执行的用户名,例如
    psql-U postgres…

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

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

    $ su postgres
    
    $ psql
    
    postgres=# alter user athleticu createdb;
    ALTER ROLE
    

    希望它能帮助您:)

    在psql中键入
    \du
    ,您将看到所有注册用户的列表以及每个用户拥有的权限类型。 为了向登录的用户(例如“user1”)授予权限,我必须使用该列表中的一个超级用户角色(例如“user2”)注销并登录,使用以下命令:

        psql -U 'user2' -h localhost 'database2'
    
    其中,“database2”是特定超级用户“user2”有权访问的数据库的名称。 以超级用户身份登录后,您可以通过以下方式向“user1”授予权限:

        ALTER ROLE user1 WITH CREATEDB 
    

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


    这很有帮助。

    新安装PostgreSQL后,您可以做的是创建具有某些权限的用户(请参阅):

    如果希望
    my user
    能够执行任何操作,只需使用
    --superuser
    标志即可:

    my-user> sudo su - postgres -c "createuser <my-user> --superuser"
    
    my user>sudo su-postgres-c“createuser--superuser”
    
    您确定服务器的地址正确吗:“无法解析主机up-172-30-4-103”?您需要使用postgres超级用户进行连接。通常是
    postgres
    。尝试
    createdb-U postgres….
    实际上我正在使用:-
    sudo ssh-I“athleticu test keypair.pem”连接到AWS机器的实例 ubuntu@52.91.xxx.xxx
    然后就变成这样:
    ubuntu@ip-172-30-4-103:~$
    @patrick你是说我应该先登录到
    postgres
    用户,然后再登录到
    athleticu
    @一匹没有名字的马,谢谢
    当您在*nix上安装Postgres时
    -您的评论中的
    *nix
    是什么意思?它是指Unix/Linux吗?关于在ubuntu上使用postgres呢?请再澄清一点@dmfay*nix是指任何源于Unix或与Unix相关的操作系统,包括各种Linux发行版(Ubuntu就是其中之一)、BSDs和Mac OS X。
    my-user> sudo su - postgres -c "createuser <my-user> --createdb"
    
    my-user> createdb <my-db>
    
    my-user> sudo su - postgres -c "createuser <my-user> --superuser"