mysql如何批量重置数据库用户密码_MySQL批量修改密码Shell脚本

张开发
2026/4/11 0:42:56 15 分钟阅读

分享文章

mysql如何批量重置数据库用户密码_MySQL批量修改密码Shell脚本
MySQL 5.7.6 必须用 ALTER USER 修改密码SET PASSWORD 和 PASSWORD() 已弃用需单引号包裹非空密码用户存在且有权限推荐配置文件传参、检查 password_expired/account_locked 状态并用 -N -s -r 导出安全SQL。mysql 5.7 用 ALTER USER 修改密码报错 ERROR 1064MySQL 5.7.6 之后 SET PASSWORD 被弃用直接写 ALTER USER userhost IDENTIFIED BY newpass; 才有效。老脚本里沿用 SET PASSWORD FOR uh PASSWORD(p); 会触发语法错误——ERROR 1064 (42000)因为 PASSWORD() 函数也从 8.0 起彻底移除。实操建议统一用 ALTER USER 语句兼容 5.7.6 和 8.0密码必须用单引号包裹且不能是空字符串会报 ERROR 1819如果用户不存在ALTER USER 不报错但也不生效得先 CREATE USER 或确认存在执行前确保当前连接用户有 UPDATE 权限在 mysql.user 表或有 SYSTEM_USER 权限Shell 脚本批量改密码时 mysql 命令连不上常见现象是脚本跑着跑着卡住或者报 ERROR 1045 (28000): Access denied本质是 Shell 里没正确传参或权限不足。实操建议不要把密码写死在命令行如 mysql -uroot -p123456会被 ps 看见改用配置文件mysql --defaults-extra-file/tmp/.my.cnf -e ALTER USER .../tmp/.my.cnf 内容必须是[client]userrootpasswordyour_real_passhostlocalhost且权限设为 chmod 600 /tmp/.my.cnf否则 mysql 拒绝读取如果目标用户是远程 host如 app10.%.%.%注意 host 在配置文件里也要匹配或显式加 -h 参数批量改密码后应用连不上忽略 password_expired 和 account_locked改完密码应用仍报 Access denied for user不是密码错了而是用户被锁或强制改密。MySQL 5.7 默认开启密码过期策略老用户可能处于 password_expired 状态8.0 还可能因多次失败登录被 account_locked。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。

更多文章