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
这将显示如下所示的结果: