使用CREATE PROFILE命令可创建新配置文件。

语法如下:

CREATE PROFILE profile_name
 [LIMIT {parameter value} ... ];

包括 LIMIT 子句以及一个或多个空格分隔的parameter/value 对,以指定PolarDB PostgreSQL版(兼容Oracle)强制实施的规则。

参数

参数说明
profile_name指定配置文件的名称。
parameter指定配置文件限制的属性。
value指定参数限制。

对于每个 parameter,PolarDB PostgreSQL版(兼容Oracle)支持以下显示的 value:

FAILED_LOGIN_ATTEMPTS 指定在服务器将用户帐户锁定 PASSWORD_LOCK_TIME 所指定的时间长度之前,用户可能进行的登录尝试失败次数。支持的值为:

  • 大于 0 的 INTEGER 值。
  • DEFAULT - DEFAULT 配置文件中指定的 FAILED_LOGIN_ATTEMPTS 的值。
  • UNLIMITED – 正在连接的用户可以进行无限次数的失败登录尝试。

PASSWORD_LOCK_TIME 指定在服务器解锁因 FAILED_LOGIN_ATTEMPTS 而被锁定的帐户之前必须经过的时间长度。支持的值为:

  • 大于等于 0 的 NUMERIC 值。要指定一天的小数部分,请指定一个小数值。例如,使用值 4.5 可指定 4 天 12 小时。
  • DEFAULT - DEFAULT 配置文件中指定的 PASSWORD_LOCK_TIME 的值。
  • UNLIMITED – 帐户被锁定,直到由数据库超级用户手动解锁。

PASSWORD_LIFE_TIME 指定在提示用户提供新密码之前,可以使用当前密码的天数。在使用 PASSWORD_LIFE_TIME 子句时包含 PASSWORD_GRACE_TIME 子句可指定在角色的连接被拒绝之前,密码过期后将经过的天数。如果未指定 PASSWORD_GRACE_TIME,则密码将在 PASSWORD_GRACE_TIME 的默认值指定的那天过期,并且在提供新密码之前,不允许用户执行任何命令。支持的值为:

  • 大于等于 0 的 NUMERIC 值。要指定一天的小数部分,请指定一个小数值。例如,使用值 4.5 可指定 4 天 12 小时。
  • DEFAULT - DEFAULT 配置文件中指定的 PASSWORD_LIFE_TIME 的值。
  • UNLIMITED – 密码没有过期日期。

PASSWORD_GRACE_TIME 指定密码过期后的宽限期的长度,直到用户被迫更改密码为止。在宽限期过期后,将允许用户进行连接,但在用户更新其过期密码之前,不允许用户执行任何命令。支持的值为:

  • 大于等于 0 的 NUMERIC 值。要指定一天的小数部分,请指定一个小数值。例如,使用值 4.5 可指定 4 天 12 小时。
  • DEFAULT - DEFAULT 配置文件中指定的 PASSWORD_GRACE_TIME 的值。
  • UNLIMITED – 宽限期是无限的。

PASSWORD_REUSE_TIME 指定用户在重新使用密码前必须等待的天数。

PASSWORD_REUSE_TIME 和 PASSWORD_REUSE_MAX 参数旨在一起使用。如果为其中一个参数指定有限值,而另一个参数为 UNLIMITED,则永远无法重新使用旧密码。如果这两个参数都设置为 UNLIMITED,则密码重新使用没有限制。支持的值为:

  • 大于等于 0 的 NUMERIC 值。要指定一天的小数部分,请指定一个小数值。例如,使用值 4.5 可指定 4 天 12 小时。
  • DEFAULT - DEFAULT 配置文件中指定的 PASSWORD_REUSE_TIME 的值。
  • UNLIMITED – 可以不受限制地重新使用密码。

PASSWORD_REUSE_MAX 指定在密码可重新使用前必须发生的密码更改次数。

PASSWORD_REUSE_TIME 和 PASSWORD_REUSE_MAX 参数旨在一起使用。如果为其中一个参数指定有限值,而另一个参数为 UNLIMITED,则永远无法重新使用旧密码。如果这两个参数都设置为 UNLIMITED,则密码重新使用没有限制。支持的值为:

  • 大于等于 0 的 INTEGER 值。
  • DEFAULT - DEFAULT 配置文件中指定的 PASSWORD_REUSE_MAX 的值。
  • UNLIMITED – 可以不受限制地重新使用密码。

PASSWORD_VERIFY_FUNCTION 指定密码复杂性。支持的值为:

  • PL/SQL 函数的名称。
  • DEFAULT - DEFAULT 配置文件中指定的 PASSWORD_VERIFY_FUNCTION 的值。
  • NULL

PASSWORD_ALLOW_HASHED 指定是否允许使用加密的密码。如果将值指定为 TRUE,系统将允许用户通过在客户端指定哈希计算加密密码来更改密码。不过,如果您将值指定为 FALSE,则必须以纯文本形式指定密码,以便有效地进行验证,否则,在服务器收到加密的密码时将引发错误。支持的值为:

  • BOOLEAN 值 TRUE/ON/YES/1 或 FALSE/OFF/NO/0。
  • DEFAULT - DEFAULT 配置文件中指定的 PASSWORD_ALLOW_HASHED 的值。
说明 PASSWORD_ALLOW_HASHED 参数与 Oracle 不兼容。

注释

可使用 DROP PROFILE 命令删除配置文件。

示例

以下命令创建名为 acctg 的配置文件。该配置文件指定,如果用户在五次尝试内未采用正确的密码通过身份验证,则帐户将锁定一天:

CREATE PROFILE acctg LIMIT
       FAILED_LOGIN_ATTEMPTS 5
       PASSWORD_LOCK_TIME 1;

以下命令创建名为 sales 的配置文件。该配置文件指定,用户必须每隔 90 天更改一次密码:

CREATE PROFILE sales LIMIT
       PASSWORD_LIFE_TIME 90
       PASSWORD_GRACE_TIME 3;

如果用户在配置文件指定的 90 天过去之前未更改其密码,则登录时会收到警告。3 天宽限期过后,将不允许其帐户调用任何命令,直到用户更改其密码。

以下命令创建名为 accts 的配置文件。该配置文件指定,用户在上次使用密码后 180 天内不能重新使用密码,且至少必须更改密码 5 次,之后才能重新使用密码:

CREATE PROFILE accts LIMIT
       PASSWORD_REUSE_TIME 180
       PASSWORD_REUSE_MAX 5;

以下命令创建名为 resources 的配置文件。该配置文件调用名为 password_rules 的用户定义函数,以验证所提供的密码是否满足其复杂性标准:

CREATE PROFILE resources LIMIT
       PASSWORD_VERIFY_FUNCTION password_rules;