当前位置: 首页 > 知识库问答 >
问题:

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

沈永新
2023-03-14

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

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

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

共有3个答案

乐健
2023-03-14

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

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

系统帐户和Postgres帐户是不同的,尽管除非在连接到数据库时指定Postgres用户名(通过psqlcreatedbdropdb等实用程序),它将使用当前系统用户的名称,希望有一个同名的对应Postgres帐户。默认情况下,root用户在Postgres中没有相应的帐户。

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

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

  1. 你可以sudo su-postgres成为postgres系统用户并执行你的命令(createdbpsql,等等)。由于系统用户与数据库超级用户同名,因此您的命令将作为相应的帐户连接

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

刘胜泫
2023-03-14

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

    psql -U 'user2' -h localhost 'database2'

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

    ALTER ROLE user1 WITH CREATEDB 

    ALTER ROLE user1 WITH SUPERUSER

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

这个博客和这个链接都很有帮助。

章承基
2023-03-14

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

$ su postgres

$ psql

postgres=# alter user athleticu createdb;
ALTER ROLE

希望对你有帮助:)

 类似资料:
  • 我试图按照https://github.com/Heroku/python-getting-start上的说明为python开发建立一个Heroku环境。当我运行: > 首先提示我输入密码:我在postgres中输入了用户“postgres”的密码 收到一条错误消息: createdb数据库创建失败:错误:拒绝创建数据库的权限 不知道怎么解决这个问题。允许用户“postgres”创建数据库。我使用

  • 问题内容: 当我尝试使用命令测试任何应用程序时(当我尝试使用使用此命令的结构来部署myproject时,我注意到了该应用程序): 我收到此错误: 命令似乎起作用。我在settings.py中的数据库设置: 问题答案: Django运行测试套件时,在您的情况下,它将创建一个新数据库。具有用户名的postgres用户没有创建数据库的权限,因此出现错误消息。 当您运行或时,Django不会尝试创建数据库

  • 问题内容: 嗨,我在Android中创建sqlite数据库时遇到了一些问题。 在模拟器上一切正常,我可以创建数据库。但这在实际的机器上不起作用。当我尝试在手机上调试应用程序时,它只是无法创建数据库。 谁能告诉我发生了什么事?我需要在清单文件中添加任何特殊权限吗?我已经尝试过ACCESS_CHECKIN_PROPERTIES或WRITE_EXTERNAL_STORAGE,但是仍然无法获取数据库。 顺

  • Thu Aug 16 15:55:47 CDT 2018:Apache Derby Network Server-10.11.1.2-(1629631)已启动并准备接受端口1888上的连接 很好!那是我想要的地方。我在端口1888上有它,因为端口1527已经在使用中。 问题是NetBeans IDE8.2没有说明创建数据库时如何选择端口。 从“服务”选项卡中,展开“数据库”节点,然后右键单击“Ja

  • 我已经安装了OBIEE12c(12.2.1.4)。OBIE12c认证矩阵表示,RCU创建实用程序支持oracle database 19c。但是,当我运行RCU创建实用程序时,它会失败,并显示以下消息 请任何人帮助我应该做什么来使用带有oracle数据库19c的RCU创建元数据存储库。

  • 我试图使用MySQL创建一个数据库。我就遇到了这个问题。我怎么才能修好它? 错误1044(42000):拒绝用户“@'localhost”访问数据库“sample_db”