创建 PostgreSQL DB 的用户权限

din*_*707 25 postgresql

我在 Ubuntu 上工作。以下是我的命令之一。

$ psql -U kuser -d postgres
Run Code Online (Sandbox Code Playgroud)

然后这将连接到数据库。但是当我尝试时从 postgres 终端

postgres=> CREATE DATABASE kdb;
ERROR:  permission denied to create database
Run Code Online (Sandbox Code Playgroud)

当我在 Ubuntu 中尝试类似的命令时,它给出了以下内容

$ sudo -u kuser createdb kdb
sudo: unknown user: kuser
sudo: unable to initialize policy plugin
Run Code Online (Sandbox Code Playgroud)

我如何创建这个数据库?。我有 sudo 权限,而 kuser 不是我。

qqx*_*qqx 49

看起来您有一个名为 的数据库用户kuser,但没有具有该名称的系统用户。这就是为什么您能够获得 postgres 提示,但 sudo 失败的原因。

该用户无法创建数据库,因为该帐户没有createdb权限。

您可以使用postgres帐户(Ubuntu 上的默认管理帐户)向用户授予该权限:

sudo -u postgres psql -c 'alter user kuser with createdb' postgres
Run Code Online (Sandbox Code Playgroud)

或者只是使用该管理帐户来创建数据库并指定它归该kuser帐户所有:

sudo -u postgres createdb -O kuser kdb
Run Code Online (Sandbox Code Playgroud)

如果该用户不打算创建其他数据库,我建议使用后一个选项,最好限制授予该帐户的权限。