📜  PostgreSQL – 创建角色

📅  最后修改于: 2022-05-13 01:57:15.515000             🧑  作者: Mango

PostgreSQL – 创建角色

PostgreSQL 使用角色来表示用户帐户。它不像其他数据库系统那样使用用户概念。通常,可以登录的角色称为登录角色。它们相当于其他数据库系统中的用户。当角色包含其他角色时,它们被称为组角色。创建角色时,它在数据库服务器(或集群)中的所有数据库中都有效。

要创建新角色,请使用CREATE ROLE语句,如下所示:

Syntax: CREATE ROLE role_name;

要获取当前 PostgreSQL 数据库服务器中的所有角色,可以从pg_roles 中查询 系统目录如下:

Syntax: SELECT rolname FROM pg_roles;

这将导致以下结果:



如果一个人使用 psql工具,可以使用  \du命令列出当前 PostgreSQL 数据库服务器中的所有现有角色:

Syntax: \du

它的行为如下所示:

角色属性

角色的属性定义了该角色的权限,包括登录、超级用户、数据库创建、角色创建、密码等:

Syntax: CREATE ROLE name WITH option;

在此语法中, WITH关键字是可选的。而选项可以是一个或多个属性包括SUPER,CREATEDB,CREATEROLE,等等。

1.创建登录角色

以下语句创建一个名为“Raju”的角色,该角色具有登录权限和初始密码:

CREATE ROLE raju
LOGIN 
PASSWORD 'mypassword1';

注意:需要将密码放在单引号 ( ' ) 中。

现在使用以下命令验证角色:



\du

角色创建成功如下图:

2.创建超级用户角色

以下语句创建了一个名为“Nikhil”的具有超级用户属性的角色:

CREATE ROLE Nikhil
SUPERUSER 
LOGIN 
PASSWORD 'mypassword1';

这将导致以下情况:

超级用户可以覆盖数据库中的所有访问限制,因此您应该仅在需要时创建此角色。

注意:一个人必须是超级用户才能创建另一个超级用户角色。

3.创建可以创建数据库的角色

如果要创建具有数据库创建权限的角色,请使用 CREATEDB 属性:

CREATE ROLE dba 
CREATEDB 
LOGIN 
PASSWORD 'Abcd1234';

这将导致以下情况:



4.创建有有效期的角色

要设置角色密码不再有效的日期和时间,请使用 valid until 属性:

VALID UNTIL 'timestamp'

例子:

CREATE ROLE dev_api WITH
LOGIN
PASSWORD 'securePass1'
VALID UNTIL '2030-01-01';

输出:

5.创建有连接限制的角色

要指定角色可以建立的并发连接数,请使用 CONNECTION LIMIT 属性:

CONNECTION LIMIT connection_count

下面创建了一个名为API的新角色,它可以建立 1000 个并发连接:

CREATE ROLE api
LOGIN
PASSWORD 'securePass1'
CONNECTION LIMIT 1000;

这将创建一个新角色,如下所示:

以下psql命令显示了我们迄今为止创建的所有角色:

\du

这将显示如下所示的结果: