MySQL之密码策略和用户授权
华子目录
密码策略
查看数据库当前的密码策略
密码策略详解
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组装电脑配置单推荐报价格
上传时间: 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分钟前 发表 |
表示没有强制要求密码在更改时与旧密码有多少百分比的字符不同 |