# Postgresql设置密码复杂度策略

### 安装和配置 `passwordcheck` 扩展

以下是如何使用 `passwordcheck` 扩展来设置 PostgreSQL 用户密码复杂度策略的步骤：

#### 1. 安装 `passwordcheck` 扩展

首先，确保已安装 PostgreSQL 和 contrib 模块：

```
sudo yum install postgresql13-server postgresql13-contrib
```

根据你的 PostgreSQL 版本，可能需要调整 `postgresql13` 为你所使用的版本。

#### 2. 启用 `passwordcheck` 扩展

将 `passwordcheck` 扩展添加到 PostgreSQL 配置文件 `postgresql.conf` 中：

```
sudo vi /var/lib/pgsql/13/data/postgresql.conf
```

添加以下行：

```
shared_preload_libraries = 'passwordcheck'
```

#### 3. 配置密码复杂度策略

在 `postgresql.conf` 文件中添加具体的密码复杂度策略配置：

```
passwordcheck.min_length = 8
passwordcheck.max_length = 20
passwordcheck.min_lowercase = 1
passwordcheck.min_uppercase = 1
passwordcheck.min_digits = 1
passwordcheck.min_special = 1
```

保存并关闭文件。

#### 4. 重启 PostgreSQL 服务

重启 PostgreSQL 以使配置生效：

```
sudo systemctl restart postgresql-13
```

#### 5. 验证配置

尝试更改 PostgreSQL 用户密码，确保密码复杂度策略生效：

```
ALTER USER your_username WITH PASSWORD 'SimplePass'; -- 应该会失败
ALTER USER your_username WITH PASSWORD 'ComplexPass1!'; -- 应该会成功
```

### 注意事项

- **密码策略配置项**：`passwordcheck` 扩展中的配置项可能不如一些外部插件详细和可定制，但是它可以覆盖基本的密码复杂度要求。
- **数据库用户**：以上配置适用于 PostgreSQL 自身的数据库用户，而不是应用系统中的用户。