授予用户帐户权限以在 PostgreSQL 中创建数据库

GSt*_*Sto 187 postgresql permissions

如何让 PostgreSQL 中的用户帐户能够创建和删除数据库?有没有办法做到这一点GRANT

Dan*_*ité 242

它完成了 ALTER USER username CREATEDB;

请参阅文档中的 ALTER USER

要删除数据库,您要么是超级用户(也可以被授予ALTER USER),要么您必须拥有该数据库。


小智 44

首先,您必须以 postgres 用户身份登录:

$ sudo -u postgres psql postgres

# \password postgres

Enter new password:
Run Code Online (Sandbox Code Playgroud)

为 postgres 用户(PostgreSQL 上的一种特殊用户)输入新密码后,您现在以 postgres 身份登录,您可以向其他用户授予权限。假设您有名为 user1 的用户。要授予他创建和删除数据库的能力,您必须编写(作为 postgres 用户):

ALTER USER user1 CREATEDB;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...


Pau*_*ole 12

从一开始就使用 CREATEROLE 和 CREATEDB 权限创建用户

在您使用命令行客户端登录到 PG 服务器后,使用具有创建用户的适当权限的用户(如postgres用户,在 UNIX 上的默认情况下,系统超级用户可以使用 轻松模拟$ sudo -u postgres psql postgres):

CREATE ROLE user_name PASSWORD 'tYPe_YoUr_PaSSwOrD' NOSUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
Run Code Online (Sandbox Code Playgroud)
  • NOSUPERUSER - 正在创建的用户没有超级用户权限(如postgres用户,推荐)。
  • CREATEDB - 被创建的用户可以创建它拥有的数据库。
  • CREATEROLE - 正在创建的用户可以为其拥有或具有特定访问权限的对象(如它创建的数据库)创建角色(登录)。
  • INHERIT - 创建的用户继承一些默认选项,可选。
  • LOGIN - 创建的用户有权登录。

也可以使用 PG 二进制文件(应用程序)。比如上面的SQL相当于运行:

CREATE ROLE user_name PASSWORD 'tYPe_YoUr_PaSSwOrD' NOSUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
Run Code Online (Sandbox Code Playgroud)

授予现有用户创建数据库的权限

在您使用命令行客户端登录到 PG 服务器后,使用具有适当权限的用户来更改用户(例如postgres用户,在 UNIX 上的默认情况下,系统超级用户可以使用 轻松模拟$ sudo -u postgres psql postgres):

ALTER USER user_name CREATEDB;
Run Code Online (Sandbox Code Playgroud)

或者,赋予与上述示例相同的权利:

ALTER USER user_name CREATEDB CREATEROLE LOGIN;
Run Code Online (Sandbox Code Playgroud)