MySQL8.0变化之密码策略

本文介绍MySQL 8.0.14版本中密码策略的变化,包括从validate_password插件到组件的迁移过程,以及如何安装和配置validate_password组件,更新密码策略参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从8.0.4开始mysql废弃了用了很久的 validate_password插件,改用 validate_password组件。


我的版本是:



mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.14    |
+-----------+
1 row in set (0.00 sec)


来查一下密码策略参数的情况:



mysql> SHOW VARIABLES LIKE 'validate_password.%';
Empty set (0.00 sec)


是因为validate_password组件没有安装,下面开始安装:



mysql> INSTALL COMPONENT 'file://component_validate_password';
Query OK, 0 rows affected (0.00 sec)


再次查看就有了



mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.00 sec)



还有一个变化是,以前是,参数以前是下划线,现在是.修改的时候要注意



mysql> set global validate_password.policy=low;
Query OK, 0 rows affected (0.00 sec)
mysql> 
mysql> 
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 8     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.00 sec)



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20893244/viewspace-2565368/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20893244/viewspace-2565368/

### MySQL 8.0 修改用户密码的方法及语法 在 MySQL 8.0 中,由于其架构的变化,修改用户密码的方式也有所调整。以下是几种常见的方法及其对应的语法。 #### 方法一:通过 `ALTER USER` 命令修改密码 可以直接使用 `ALTER USER` 命令来更新用户的密码。此方式适用于已登录到数据库的情况: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ``` 这种方法简单高效,适合大多数场景[^5]。 --- #### 方法二:通过 `SET PASSWORD` 命令设置密码 如果需要更灵活地管理密码,可以使用 `SET PASSWORD` 命令: ```sql SET PASSWORD FOR 'root'@'localhost' = '新密码'; ``` 需要注意的是,在某些情况下可能还需要指定加密算法,例如 `mysql_native_password`[^2]。 --- #### 方法三:直接操作 `mysql.user` 表中的 `authentication_string` 字段 对于特殊情况下的密码重置(如忘记 root 密码),可以通过编辑表数据实现。具体步骤如下: 1. 编辑 MySQL 配置文件 (my.cnf),添加一行以跳过权限验证: ``` [mysqld] skip-grant-tables ``` 2. 重启 MySQL 服务使配置生效; 3. 使用无密码模式进入 MySQL 数据库; 4. 更新 `mysql.user` 表中的 `authentication_string` 字段值为新的哈希密码字符串;或者清空该字段后再重新定义密码: ```sql UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES; ``` 注意:自 MySQL 8.0 起,`PASSWORD()` 函数已被废弃,因此推荐改用其他替代方案[^4]。 --- #### 方法四:利用命令行工具完成密码变更 当无法正常访问图形界面或交互环境受限时,可通过 DOS 或 Linux Shell 执行 SQL 指令快速更改密码。例如运行以下脚本即可达到目的: ```bash mysql -u root -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';" ``` 上述指令会提示输入当前有效凭证后执行相应动作。 --- ### 总结 综上所述,针对不同需求可以选择合适的策略来进行 MySQL 用户账户的安全维护工作。无论是常规业务还是应急处理都能找到恰当的技术手段予以支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值