Mysq登陆后执行命令提示You must SET PASSWORD before executing this statement

本文描述了在MySQL安装后遇到的You must SET PASSWORD before executing this statement错误,即使用户认为已设置密码。文章分享了一种解决方法,通过执行set password=password('123456')来解决问题,但作者仍对为何会出现此问题感到困惑。

mysql  安装完成后,在输入命令行时,提示:You must SET PASSWORD before executing this statement 

提示必须设置密码,我想不是已经设置了密码吗?见鬼了哎  linux 就是麻烦  网上查了资料

执行set password=password('123456')  解决 ,但仍然不明白惠出现这个鬼!!!!!!!!!!!!!!!!!!!!!

 

转载于:https://www.cnblogs.com/Mr-wx/p/8763179.html

### 可能遇到的问题及解决方法 #### 1. MySQL 版本兼容性问题 在 MySQL 5.x 中,该语句可能可以正常使用,但是在 MySQL 8.x 版本中,`password()` 函数已被弃用,并且用户密码存储的字段名也发生了变化,在 MySQL 8.x 里,用户密码存储在 `authentication_string` 字段中,而不是 `password` 字段。 **解决方法**:在 MySQL 8.x 中使用以下语句来更新用户密码: ```sql UPDATE mysql.user SET authentication_string = PASSWORD('复杂的新密码') WHERE user = 'test'; FLUSH PRIVILEGES; ``` #### 2. 权限问题 如果执行该 `UPDATE` 语句的用户没有足够的权限来修改 `user` 表中的记录,会导致更新失败。 **解决方法**:使用具有足够权限的用户(如 `root` 用户)登录 MySQL,然后执行该更新语句。登录命令示例: ```bash mysql -u root -p ``` #### 3. 未指定数据库 如果没有指定要操作的数据库,MySQL 可能无法找到 `user` 表,因为 `user` 表位于 `mysql` 系统数据库中。 **解决方法**:在执行 `UPDATE` 语句之前,先切换到 `mysql` 数据库: ```sql USE mysql; UPDATE user SET password = PASSWORD('复杂的新密码') WHERE user = 'test'; FLUSH PRIVILEGES; ``` #### 4. 密码复杂度验证问题 如果 MySQL 开启了密码复杂度验证插件,设置的“复杂的新密码”可能不符合密码复杂度要求,从而导致更新失败。 **解决方法**:检查 MySQL 的密码复杂度验证规则,调整密码使其符合要求,或者修改密码复杂度验证规则。例如,临时降低密码复杂度要求,可以修改 `validate_password` 插件的相关参数: ```sql SET GLOBAL validate_password.policy = LOW; ``` ### 正确使用方法总结 在 MySQL 5.x 中,正确使用该语句的完整步骤如下: ```sql -- 登录 MySQL -- mysql -u root -p -- 切换到 mysql 数据库 USE mysql; -- 更新用户密码 UPDATE user SET password = PASSWORD('复杂的新密码') WHERE user = 'test'; -- 刷新权限 FLUSH PRIVILEGES; ``` 在 MySQL 8.x 中,正确使用的语句如下: ```sql -- 登录 MySQL -- mysql -u root -p -- 切换到 mysql 数据库 USE mysql; -- 更新用户密码 UPDATE user SET authentication_string = PASSWORD('复杂的新密码') WHERE user = 'test'; -- 刷新权限 FLUSH PRIVILEGES; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值