我正在使用 Ubuntu。以下是我的命令之一。
$ psql -U kuser -d postgres
然后这将连接到数据库。但是当我尝试从 postgres 终端
postgres=> CREATE DATABASE kdb;
ERROR: permission denied to create database
当我在 Ubuntu 中尝试类似的命令时,它给出了以下内容
$ sudo -u kuser createdb kdb
sudo: unknown user: kuser
sudo: unable to initialize policy plugin
我如何创建这个数据库?我有 sudo 权限,而且 kuser 不是我。
答案1
看起来您有一个名为 的数据库用户kuser
,但没有同名的系统用户。这就是为什么您能够获得 postgres 提示符,但 sudo 失败的原因。
该用户无法创建数据库,因为该帐户没有权限createdb
。
postgres
您可以使用该帐户(Ubuntu 上的默认管理帐户)向用户授予该权限:
sudo -u postgres psql -c 'alter user kuser with createdb' postgres
或者只使用该管理帐户创建数据库并指定它由该kuser
帐户拥有:
sudo -u postgres createdb -O kuser kdb
如果该用户不打算创建其他数据库,我建议使用后一个选项,最好限制授予该帐户的权限。