mysql从库处置惩罚报错You must reset your password using ALTER USER sta ...

打印 上一主题 下一主题

主题 978|帖子 978|积分 2934

在 linux 中安装好 MySQL 并完成初始化配置后,使用默认天生的 root 用户密码登录 MySQL 时,可能会出现无法实行任何语句的情况,提示「You must reset your password using ALTER USER statement before executing this statement」。
这是因为 MySQL 5.7 版本后,用户表的密码字段由 password 改为了 authentication_string,同时增长了一个 password_expired 字段来标识密码是否过期。
  1. 对于 root 用户密码过期的情况,我们可以通过以下步骤来修改root用户的密码:
  2. 1. 停止所有的 MySQL 进程。使用命令 `service mysql stop` 或 `killall mysql`
  3. 2. 使用无验证模式启动 MySQL。执行命令 `mysqld_safe --skip-grant-tables`
  4. 3. 使用 MySQL 客户端登录无需密码。此时可以执行任何语句。
  5. 4. 检查用户表,使用 `select * from mysql.user;`来查看用户详情。
  6. 5. 修改 root 用户的密码到期标识和密码。
  7. 6. 使用语句:
  8. `update mysql.user set authentication_string=password('yourpassword'), password_expired='N' where user='root';`
  9. 执行 `flush privileges;`刷新 privileges 表。
  10. 查看结果
  11. select authentication_string,password_expired from user where user='root';
  12. 8. 重新使用正常模式启动 MySQL 服务。执行 `service mysql start`
  13. 9. 使用新设置的 root 密码登录 MySQL 客户端进行操作。
复制代码
以上步骤可以很方便地解决 MySQL 中 root 密码过期无法登录的问题。重置密码后必要更新整个项目中的毗连配置,以确保正常访问数据库。

也可以调整my.cnf
  1. #设置密码过期时间为120天,设为0表示不过期
  2. #default_password_lifetime = 120
  3. default_password_lifetime = 0
  4. #修改密码强度策略,0为低策略
  5. #validate_password_policy=0
  6. #修改密码长度
  7. #validate_password_length=5
  8. #跳过密码校验,无密码登录
  9. #skip-grant-tables
复制代码
其他报错处置惩罚:
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
这个错误表示MySQL的系统权限表mysql.user结构与MySQL服务器预期的不匹配,可能是由于不兼容的升级或错误的操作导致该系统表被粉碎。
解决方案有以下几种:

  • 实行用mysqld自带的修复模式先修复表结构:
  1. mysqld --defaults-file=/etc/my.cnf --skip-grant-tables --user=mysql --skip-networking --safe-mode &
复制代码
进入安全模式后,实行:
  1. mysql> USE mysql;
  2. mysql> REPAIR TABLE user;
复制代码
假如能顺利修复,则重启正常模式的mysqld服务器并登录查抄。

  • 假如上述修复没有效果,可以实行重修mysql.user表:
  1. mysqldump --add-drop-table --no-data mysql user > user.sql
复制代码
退出,删除mysql.user表:
  1. DROP TABLE mysql.user;
复制代码
然后重修:
  1. SOURCE user.sql;
复制代码

  • 假如以上两种方式仍然无法修复,则可以实行重新初始化MySQL数据目录:
  1. mysqld --defaults-file=/etc/my.cnf --initialize-insecure
复制代码
这将移除所有数据重新初始化,之后必要重新导入数据。

  • 最后的紧急情况下可以选择完全卸载重装MySQL服务器。
在修复过程中务必对现有数据做好备份。修复表结构本质上是对表重修,假如有数据破坏可能导致部门数据丢失。假如不行的话,可以思量用之前的备份重修。
产生这个错误一般是由于MySQL版本升级,权限表结构发生变革,手动操作错误等导致。我们必要格外胆小如鼠操作系统权限表。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表