您现在的位置是:首页 > 编程 > 

MySQL之密码策略和用户授权

2025-07-25 14:49:39
华子目录 密码策略 查看数据库当前的密码策略 密码策略详解 caching_sha2_password_auto_generate_rsa_keys caching_sha2_password_digest_rounds

华子目录

  • 密码策略
    • 查看数据库当前的密码策略
    • 密码策略详解
      • caching_sha2_password_auto_generate_rsa_keys
      • caching_sha2_password_digest_rounds
      • caching_sha2_password_private_key_path
      • caching_sha2_password_public_key_path
      • default_password_lifetime
      • disconnect_on_expired_password
      • generated_random_password_length
      • mysql_native_password_proxy_users
      • password_history
      • password_require_current
      • password_reuse_interval
      • sha256_password_auto_generate_rsa_keys
      • sha256_password_private_key_path
      • sha256_password_proxy_users
      • sha256_password_public_key_path
    • 查看==密码验证插件==
      • validate__characters_percentage
      • validate__user_name
      • validate_password.dictionary_file
      • validate_password.length
      • validate__case_count
      • validate__count
      • validate_password.policy
      • validate_password.special_char_count
    • 修改密码策略
      • 方法1:临时修改
      • 方法2:永久性修改
      • 方法:配置文件永久性修改
    • win和Linux下的配置文件
  • 用户授权
    • 创建用户
    • 查看用户
    • 查看用户权限
      • 查看==某个用户==从==哪个服务器ip地址==连接对==某个数据库==的操作权限
      • 查看用户对单个表的权限
    • usage权限
    • 删除用户
    • 授权
      • MySQL常用授权列表
    • 回收权限
  • 临时性修改MySQL中的系统变量
  • 持久性修改MySQL中的系统变量

密码策略

  • MySQL8.0之后会生成临时密码,查看临时密码
[root@sql ~]# awk '/temporary password/ {print $F}' /var/log/mysqld.log
fk?lyfP&im
[root@sql ~]# grep 'password' /var/log/mysqld.log
2024-02-04T14:55:57.94017Z 6 [ote] [MY-010454] [Server] A temporary password is generated for root@localhost: fk?lyfP&im
查看数据库当前的密码策略
mysql> show variables like '%password%';
+-------------------------------------------------+-----------------+
| Variable_name                                   | Value           |
+-------------------------------------------------+-----------------+
| caching_sha2_password_auto_generate_rsa_keys    | O              |
| caching_sha2_password_digest_rounds             | 5000            |
| caching_sha2_password_private_key_path          | private_key.pem |
| caching_sha2_password_public_key_path           | public_key.pem  |
| default_password_lifetime                       | 0               |
| disconnect_on_expired_password                  | O              |
| generated_random_password_length                | 20              |
| mysql_native_password_proxy_users               | OFF             |
| password_history                                | 0               |
| password_require_current                        | OFF             |
| password_reuse_interval                         | 0               |
| report_password                                 |                 |
| sha256_password_auto_generate_rsa_keys          | O              |
| sha256_password_private_key_path                | private_key.pem |
| sha256_password_proxy_users                     | OFF             |
| sha256_password_public_key_path                 | public_key.pem  |
| validate__characters_percentage | 0               |
| validate__user_name               | O              |
| validate_password.dictionary_file               |                 |
| validate_password.length                        | 8               |
| validate__case_count              | 1               |
| validate__count                  | 1               |
| validate_password.policy                        | MEDIUM          |
| validate_password.special_char_count            | 1               |
+-------------------------------------------------+-----------------+
密码策略详解
1. `caching_sha2_password_auto_generate_rsa_keys`: 当设置为`O`时,如果没有可用的RSA密钥对,MySQL服务器将自动生成它们,这对于SHA-2密码认证是必需的。

2. `caching_sha2_password_digest_rounds`: 这个值(设置为5000)表示在使用SHA-2密码认证时,密码摘要计算的迭代次数。

. `caching_sha2_password_private_key_path`: 指向存储RSA私钥的文件的路径,这里使用的是`private_key.pem`4. `caching_sha2_password_public_key_path`: 指向存储RSA公钥的文件的路径,这里使用的是`public_key.pem`5. `default_password_lifetime`: 设置为`0`,表示用户密码没有到期限制,用户密码永不过期。

6. `disconnect_on_expired_password`: 设置为`O`,表示如果用户的密码已过期,MySQL将在用户下次尝试连接时断开连接。

7. `generated_random_password_length`: 设置为`20`,表示MySQL服务器生成的随机密码的长度。

8. `mysql_native_password_proxy_users`: 设置为`OFF`,表示不允许使用`mysql_native_password`插件的代理用户功能。

9. `password_history`: 设置为`0`,表示MySQL服务器不会保留密码的历史记录,所以用户可以随时重用旧密码。

10. `password_require_current`: 设置为`OFF`,表示在更改密码时不需要提供当前密码。

11. `password_reuse_interval`: 设置为`0`,表示没有限制用户多久之后可以重用旧密码。

12. `report_password`: 这个参数没有显示值,通常用于控制是否报告密码更改。

1. `sha256_password_auto_generate_rsa_keys`: 设置为`O`,和`caching_sha2_password_auto_generate_rsa_keys`类似,用于自动生成SHA-256密码认证所需的RSA密钥对。

14. `sha256_password_private_key_path`:`caching_sha2_password_private_key_path`,指定SHA-256密码认证所用的RSA私钥文件路径。

15. `sha256_password_proxy_users`: 设置为`OFF`,表示不允许使用`sha256_password`插件的代理用户功能。

16. `sha256_password_public_key_path`:`caching_sha2_password_public_key_path`,指定SHA-256密码认证所用的RSA公钥文件路径。

17. `validate__characters_percentage`: 设置为`0`,表示没有强制要求密码在更改时与旧密码有多少百分比的字符不同。

18. `validate__user_name`: 设置为`O`,表示在密码验证过程中,会检查密码是否包含用户名。

19. `validate_password.dictionary_file`: 没有具体值,这通常指向一个文件,该文件包含不允许作为密码一部分的单词列表。

20. `validate_password.length`: 设置为`8`,表示密码的最小长度要求。

21. `validate__case_count`: 设置为`1`,表示密码中至少需要包含一个大写字母和一个小写字母。

22. `validate__count`: 设置为`1`,表示密码中至少需要包含一个数字。

2. `validate_password.policy`: 设置为`MEDIUM`,表示密码复杂性策略的等级。

24. `validate_password.special_char_count`: 设置为`1`,表示密码中至少需要包含一个特殊字符。

这些设置影响着MySQL服务器中用户账户密码的复杂性和安全性要求。根据具体的安全策略需要,数据库管理员可以调整这些参数值。

caching_sha2_password_auto_generate_rsa_keys

`caching_sha2_password_auto_generate_rsa_keys` 是一个 MySQL 系统变量,用于指定在需要时是否自动生成 RSA 密钥对来加密和解密客户端的密码,以及用于签名和验证握手数据。

`caching_sha2_password_auto_generate_rsa_keys` 主要用于控制 MySQL 使用的加密算法和密钥管理。当设置为 `O` 时,MySQL 将会在需要时自动生成 RSA 密钥对。

RSA 密钥对用于加密和解密客户端的密码,以及签名和验证握手数据。这是为了提供安全的身份验证和通信,特别是在加密连接上。

默认情况下,`caching_sha2_password_auto_generate_rsa_keys` 被设置为 `O`,这意味着 MySQL 会在需要时自动生成 RSA 密钥对。这样可以确保在安装或重新初始化 MySQL 数据库时,不需要手动创建和配置 RSA 密钥对。

你可以使用以下语句来设置 `caching_sha2_password_auto_generate_rsa_keys`:

mysql> SET GLOBAL caching_sha2_password_auto_generate_rsa_keys = O;
或者
mysql> SET GLOBAL caching_sha2_password_auto_generate_rsa_keys = OFF;

根据实际需求和安全要求,你可以根据需要启用或禁用自动生成 RSA 密钥对。

caching_sha2_password_digest_rounds

`caching_sha2_password_digest_rounds` 是一个 MySQL 系统变量,用于指定 SHA-256 缓存身份验证插件(caching_sha2_password)中使用的密码哈希迭代轮数。

这个变量控制了加密用户密码时使用的哈希函数的计算复杂度。更高的迭代轮数意味着计算哈希值所需的时间更长,因此增加了密码的安全性。

具体地说,`caching_sha2_password_digest_rounds` 定义了使用 SHA-256 加密算法加密密码时的哈希迭代轮数。较高的迭代轮数增加了密码哈希的计算复杂度,使得密码更加困难。

默认情况下,`caching_sha2_password_digest_rounds` 的值为5000。这个值提供了一个合理的安全性水平,但可以根据实际需求和安全要求进行调整。

你可以使用以下语句来设置 `caching_sha2_password_digest_rounds`:

mysql> SET GLOBAL caching_sha2_password_digest_rounds = 10000;

这将增加密码哈希的计算复杂度,提高密码的安全性。根据安全需求和性能要求,你可以根据需要调整密码哈希迭代轮数。

caching_sha2_password_private_key_path

`caching_sha2_password_private_key_path` 是一个 MySQL 系统变量,用于指定在使用 SHA-256 缓存身份验证插件时,存储私钥的文件路径。

SHA-256 缓存身份验证插件(caching_sha2_password)是 MySQL 8.0 版本引入的一种密码验证插件,用于增强 MySQL 的身份验证机制。它使用了基于 SHA-256 的加密算法,并且支持加密通信。私钥是在加密和解密过程中用于生成和验证加密签名的重要部分。

当 MySQL 使用 SHA-256 缓存身份验证插件时,`caching_sha2_password_private_key_path` 变量指定了存储用于加密的私钥的文件路径。通常情况下,私钥文件的扩展名为 `.pem`。

默认情况下,`caching_sha2_password_private_key_path` 设置为 `private_key.pem`,这意味着 MySQL 会在与之关联的数据目录中查名为 `private_key.pem` 的私钥文件。如果需要更改私钥文件的路径,可以通过修改此系统变量来指定新的路径。

请注意,私钥文件的安全性非常重要,因此应该妥善保护私钥文件,只有授权的用户可以访问。任何泄露私钥文件的情况都可能导致安全漏洞和数据泄露风险。

caching_sha2_password_public_key_path

`caching_sha2_password_public_key_path` 是一个 MySQL 系统变量,用于指定在使用 SHA-256 缓存身份验证插件时,存储公钥的文件路径。

SHA-256 缓存身份验证插件(caching_sha2_password)是 MySQL 8.0 版本引入的一种密码验证插件,用于增强 MySQL 的身份验证机制。它使用了基于 SHA-256 的加密算法,并且支持加密通信。公钥是用于验证从客户端发送的加密数据的重要部分。

当 MySQL 使用 SHA-256 缓存身份验证插件时,`caching_sha2_password_public_key_path` 变量指定了存储用于加密的公钥的文件路径。通常情况下,公钥文件的扩展名为 `.pem`。

默认情况下,`caching_sha2_password_public_key_path` 设置为 `public_key.pem`,这意味着 MySQL 会在与之关联的数据目录中查名为 `public_key.pem` 的公钥文件。如果需要更改公钥文件的路径,可以通过修改此系统变量来指定新的路径。

请注意,公钥文件的安全性非常重要,因此应该妥善保护公钥文件,只有授权的用户可以访问。任何泄露公钥文件的情况都可能导致安全漏洞和数据泄露风险。

default_password_lifetime

`default_password_lifetime` 是一个 MySQL 系统变量,用于指定新创建用户的密码的默认过期时间。

当这个系统变量被设置为一个非零值时,新创建的用户的密码将在指定的时间段后过期。过期后,用户将被要求更改密码,否则将无法登录 MySQL。

如果 `default_password_lifetime` 被设置为0,意味着新创建用户的密码将永不过期,即密码不会被强制更改。

默认情况下,`default_password_lifetime` 通常被设置为0,这意味着新用户的密码不会被强制更改。但是,根据安全策略和合规性要求,你可以将其设置为一个正整数值,以强制密码定期更改。

例如,如果要求所有用户的密码每90天更改一次,可以执行以下语句:
mysql> set global default_password_lifetime = 90;

这将使新创建的用户的密码在创建后90天后过期,需要用户更改密码才能继续使用 MySQL。

disconnect_on_expired_password

`disconnect_on_expired_password` 是一个 MySQL 系统变量,用于指定当用户的密码过期时是否断开与 MySQL 的连接。

当 `disconnect_on_expired_password` 被设置为 `O` 时,如果用户的密码过期了,MySQL 将会立即断开与该用户的连接。这意味着用户需要重新连接并提供一个新的、未过期的密码才能再次访问数据库。

默认情况下,`disconnect_on_expired_password` 被设置为 `O`,这意味着当密码过期时,MySQL 将会断开与用户的连接。这是为了确保安全性,因为过期的密码可能不再安全,需要用户立即更改。

如果将 `disconnect_on_expired_password` 设置为 `OFF`,则即使密码过期,MySQL 也不会立即断开与用户的连接。这可能会导致安全风险,因为用户可以继续使用过期的密码来访问数据库。

你可以使用以下语句来设置 `disconnect_on_expired_password`:
mysql> SET GLOBAL disconnect_on_expired_password = O;
或者
mysql> SET GLOBAL disconnect_on_expired_password = OFF;

根据安全策略和合规性要求,你可以根据实际情况选择是否启用这个选项。

generated_random_password_length

`generated_random_password_length` 是一个 MySQL 系统变量,用于指定自动生成的随机密码的长度。

当 MySQL 需要生成随机密码时,例如在创建新用户或重置密码时,会使用此变量指定的长度生成随机密码。

默认情况下,`generated_random_password_length` 的值为 20,这意味着自动生成的随机密码将包含 20 个字符。这个长度可以根据实际需求进行调整。

例如,如果你想将自动生成的随机密码的长度设置为 12,可以执行以下语句:

mysql> SET GLOBAL<

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1102877.html

相关标签:无
上传时间: 2025-07-15 20:12:04
留言与评论(共有 11 条评论)
本站网友 和义大道
15分钟前 发表
MySQL 也不会立即断开与用户的连接
本站网友 繁花落尽执何手
25分钟前 发表
较高的迭代轮数增加了密码哈希的计算复杂度
本站网友 ab型
8分钟前 发表
如果 `default_password_lifetime` 被设置为0
本站网友 24小时纸黄金
27分钟前 发表
MySQL服务器将自动生成它们
本站网友 4月1号
21分钟前 发表
20. `validate_password.length`
本站网友 怎样使用玫瑰精油
18分钟前 发表
设置为`0`
本站网友 嚼槟榔
23分钟前 发表
通常用于控制是否报告密码更改
本站网友 搜狗语音输入法
14分钟前 发表
8. `mysql_native_password_proxy_users`
本站网友 牛群
26分钟前 发表
只有授权的用户可以访问
本站网友 asp免费空间
24分钟前 发表
表示没有强制要求密码在更改时与旧密码有多少百分比的字符不同