安装MySQL5.6新建用户并创建密码时总是提示密码不符合要求:ERROR 1819 (HY000): Your password does NOT satisfy the CURRENT ……

本文探讨了MySQL5.6版本中密码强度验证插件validate_password的影响及使用方法,包括插件的启用、相关选项配置以及如何解决密码不符合要求的提示。

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

安装MySQL5.6新建用户并创建密码时总是提示密码不符合要求:ERROR 1819 (HY000): Your password does NOT satisfy the CURRENT policy requirements。

查看得知,原来MySQL5.6.6增加了密码强度验证插件validate_password,相关参数设置的较为严格,所以……

使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。影响的语句和函数有:create user,grant,set password,password(),old password。

密码强度可由validate password strength()函数评估(返回0至100之间的数),如:

mysql>select VALIDATE_PASSWORD_STRENGTH('123456');
mysql>select VALIDATE_PASSWORD_STRENGTH('Password@123456');

注意,已经散列过的密码不被验证,如:
mysql> SET PASSWORD = PASSWORD('abc');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

mysql> SET PASSWORD = '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';
Query OK, 0 rows affected (0.01 sec)

相关选项:

  • --validate-password=ON/OFF/FORCE/FORCE_PLUS_PERMANENT:决定是否使用该插件(及强制/永久强制使用)。
  • validate_password_dictionary_file:插件用于验证密码强度的字典文件路径。
  • validate_password_length:密码最小长度。
  • validate_password_mixed_case_count:密码至少要包含的小写字母个数和大写字母个数。
  • validate_password_number_count:密码至少要包含的数字个数。
  • validate_password_policy:密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。
  • validate_password_special_char_count:密码至少要包含的特殊字符数。
其中关于validate_password_policy-密码强度检查等级:
  • 0/LOW:只检查长度。
  • 1/MEDIUM:检查长度、数字、大小写、特殊字符。
  • 2/STRONG:检查长度、数字、大小写、特殊字符字典文件。
插件的安装启用:
  • 插件对应的库对象文件需在配置选项plugin_dir指定的目录中。
  • 可使用--plugin-load=validate_password.so在server启动时载入插件,或者将plugin-load=validate_password.so写入配置文件。
  • 也可以通过如下语句在server运行时载入插件(会注册进mysql.plugins表)mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
为阻止该插件在运行时被删除可在配置文件中添加:
[mysqld]
plugin-load=validate_password.so
validate-password=FORCE_PLUS_PERMANENT


具体参考:http://dev.mysql.com/doc/refman/5.6/en/validate-password-plugin.html

<think>嗯,用户之前问了关于在Windows版本的MySQL中修复系统表缺失或权限问题的方法,现在他们想了解如何修改数据库的临密码。首先,我需要确定用户的具体情况。他们可能刚刚初始化了MySQL,得到了一个临密码,现在需要修改这个临密码以便正常使用。 用户可能对MySQL熟悉,特别是在Windows环境下,所以步骤需要详细且易于理解。首先,我需要确认用户是否已经按照之前的步骤成功初始化了MySQL且能够启动服务。然后,他们可能遇到了如何登录修改临密码的问题。 接下来,我需要考虑同的MySQL版本,特别是MySQL 5.7及以上版本,因为从5.7开始,默认的身份验证插件改为了caching_sha2_password,而旧版本可能使用mysql_native_password。这可能会影响修改密码的命令,用户如果遇到认证插件的问题,可能需要调整命令。 另外,用户可能在使用命令行工具遇到权限问题,或者忘记使用管理员权限运行CMD,这也是需要注意的地方。需要提醒用户以管理员身份运行命令提示符,确保MySQL服务正在运行。 还要考虑临密码的特殊情况,比如密码中有特殊字符,这候在命令行中使用需要转义或者用引号包裹。此外,修改密码后可能需要刷新权限,或者重启服务,以确保新密码生效。 用户可能在修改密码后仍然无法访问,这候需要检查是否有语法错误,或者是否有其他配置问题,比如root用户的host设置是否正确,是否需要重新启动MySQL服务等。 最后,可能需要提供一些常见问题的解决方法,比如忘记临密码如何重置,或者修改密码后仍然无法登录的情况如何处理。这样用户能够自行排查问题,减少进一步的困惑。 总结一下,步骤应该包括登录MySQL、修改密码、验证新密码是否生效,以及处理可能遇到的问题。需要分版本说明同的命令,提醒用户注意权限和特殊字符的问题。此外,提供错误处理的方法能帮助用户更好地应对意外情况。</think>以下是针对 **Windows 系统**中 MySQL 数据库临密码的修改方法,分步骤详细说明: --- ### **1. 使用临密码登录 MySQL** 在初始化 MySQL 后,系统会生成一个**临密码**(格式如 `A temporary password is generated for root@localhost: xxxxxx`)。 **第一步需用此密码登录 MySQL**: ```cmd # 以管理员身份打开命令提示符 cd "C:\Program Files\MySQL\MySQL Server X.X\bin" # 进入 MySQL 的 bin 目录(替换 X.X 为你的版本号) mysql -u root -p ``` - 输入临密码密码中的特殊字符(如 `!`、`#`)可能需要转义或用英文引号包裹(例如 `'Abc!123#'`)。 - 若提示 `Access denied`,检查是否输错密码或服务未启动(先执行 `net start MySQL` 启动服务)。 --- ### **2. 修改临密码MySQL 版本的命令)** #### **情况 1:MySQL 5.7 及以上版本** ```sql -- 登录成功后,直接执行以下命令(注意替换 'new_password' 为你的新密码) ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; -- 刷新权限 ``` #### **情况 2:MySQL 5.6 或更旧版本** ```sql -- 旧版本可能需要使用 SET PASSWORD 命令 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password'); FLUSH PRIVILEGES; ``` -- 退出 MySQL EXIT; -- 重新登录(使用新密码mysql -u root -p ``` - 输入新密码后成功进入 MySQL 命令行,表示修改成功。 --- ### **4. 常见问题处理** #### **问题 1:忘记临密码** 如果临密码未记录或已丢失,需**重置 MySQL 密码**: 1. **停止 MySQL 服务**: ```cmd net stop MySQL ``` 2. **以跳过权限表模式启动 MySQL**: ```cmd mysqld --skip-grant-tables --shared-memory ``` - 此模式会忽略密码验证,保持此窗口运行。 3. **新开命令提示符窗口登录 MySQL**: ```cmd mysql -u root ``` 4. **强制修改密码**: ```sql -- MySQL 5.7+ UPDATE mysql.user SET authentication_string=password('new_password') WHERE user='root'; FLUSH PRIVILEGES; -- MySQL 8.0+(使用新加密方式) ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; ``` 5. **重启 MySQL 服务**: ```cmd net stop MySQL net start MySQL ``` --- #### **问题 2:密码复杂度要求满足** MySQL 8.0+ 默认启用密码强度检查,若提示 `ERROR 1819 (HY000): Your password does not satisfy the current policy requirements`,需: 1. 降低密码复杂度要求(临): ```sql SET GLOBAL validate_password.policy = LOW; -- 可选值: LOW, MEDIUM, STRONG SET GLOBAL validate_password.length = 6; -- 最小长度 ``` 2. 重新设置简单密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ``` --- ### **5. 注意事项** 1. **管理员权限**:所有操作需在管理员权限的命令提示符中执行。 2. **密码安全**:避免使用过于简单的密码(如 `123456`),建议包含大小写字母、数字和符号。 3. **配置文件**:修改后若需持久化配置,需更新 `my.ini` 文件中的 `validate_password` 相关参数。 --- 通过以上步骤,即可完成 MySQL密码的修改。如仍遇到问题,可查看 MySQL 错误日志(默认路径:`C:\ProgramData\MySQL\MySQL Server X.X\data\<主机名>.err`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值