MySQL 5.7 root密码修改及ERROR 1193/1819/1290报错解决
在MySQL 5.7环境中,修改root密码常因密码验证插件缺失或策略严格而失败。本文演示如何绕过权限认证进行免密登录,并逐一解决ERROR 1290、ERROR 1819及ERROR 1193等典型报错,最终完成密码重置与远程访问配置。
一、准备免密登录环境
在无法使用旧密码登录或忘记密码的情况下,需要临时跳过权限表验证。首先编辑MySQL配置文件 /etc/my.cnf,在 [mysqld] 段落下新增一行:
skip-grant-tables
保存文件后,重启MySQL服务以使配置生效:
systemctl restart mysqld.service
检查服务状态,确保运行正常:
systemctl status mysqld.service
此时可使用以下命令以root身份登录,提示输入密码时直接回车即可:
mysql -uroot -p
二、修改密码及常见报错处理
进入MySQL命令行后,执行以下SQL语句修改root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
若操作顺利,密码即修改成功。但MySQL 5.7默认开启密码强度验证,可能会触发以下错误。
1. 解决 ERROR 1290 (Operation unsupported)
如果执行 ALTER USER 时报错 ERROR 1290(The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement),说明权限表尚未重载。请在MySQL命令行中执行刷新:
FLUSH PRIVILEGES;
再次尝试修改密码,通常即可成功:
2. 解决 ERROR 1819 (Password validation failed)
若提示 ERROR 1819,表示设置的密码不符合当前的密码安全策略(如长度不足或复杂度不够)。此时需调整安全策略:
将验证策略设置为低等级:
SET GLOBAL validate_password_policy=0;
将最小密码长度设置为较短值(如1-8位):
SET GLOBAL validate_password_length=1;
3. 解决 ERROR 1193 (Unknown system variable)
如果在设置上述变量时遇到 ERROR 1193(Unknown system variable 'validate_password...'),说明当前MySQL实例未加载 validate_password 插件。这是MySQL 5.7初始化的常见问题。
解决方法是手动加载插件:
1. 再次编辑 /etc/my.cnf,在 [mysqld] 下添加:
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
2. 重启MySQL服务:
systemctl restart mysqld.service
3. 重新登录MySQL(此时仍需skip-grant-tables免密登录):
4. 执行 SHOW VARIABLES LIKE 'validate_password%'; 确认插件已加载且参数可见:
SHOW VARIABLES LIKE 'validate_password%';
5. 成功后,可再次执行降低策略的操作,或直接修改符合要求的强密码:
6. 最终确认策略状态并刷新权限,然后修改密码:
三、收尾与远程访问配置
密码修改完成后,必须退出当前会话:
exit;
再次使用新密码登录测试是否成功:
最后一步,务必删除 /etc/my.cnf 中的 skip-grant-tables 和插件加载配置,防止产生安全隐患。重启MySQL恢复标准认证模式。
若允许其他机器远程连接数据库,可在登录MySQL后执行以下授权(可选):
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '新密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
以上就是MySQL 5.7 root用户密码修改方法及ERROR 1193、ERROR1819与ERROR1290报错解决的详细内容,更多关于MySQL root用户密码修改的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













