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 'user'@'host' IDENTIFIED BY 'newpass'; 才有效。老脚本里沿用 SET PASSWORD FOR 'u'@'h' = 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 内容必须是:clientuser=rootpassword=your_real_passhost=localhost且权限设为 chmod 600 /tmp/.my.cnf,否则 mysql 拒绝读取如果目标用户是远程 host(如 'app'@'10.%.%.%'),注意 host 在配置文件里也要匹配,或显式加 -h 参数批量改密码后应用连不上:忽略 password_expired 和 account_locked改完密码,应用仍报 Access denied for user,不是密码错了,而是用户被锁或强制改密。MySQL 5.7+ 默认开启密码过期策略,老用户可能处于 password_expired 状态;8.0+ 还可能因多次失败登录被 account_locked。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
且听风吟02207 小时前
7.包管理工具Cloud云卷云舒7 小时前
从墨天轮排名中,分析近期增速快、中长期具备高潜力国产数据库lsylalalala7 小时前
mysql-索引1叶 落7 小时前
Ubuntu24 安装 PostgreSQL程序员杰哥8 小时前
依赖于第三方接口时,如何进行测试?java修仙传8 小时前
从网页禅道到 AI 能调用的工具:我的禅道 MCP 实现思路分享HAYDENR8 小时前
依赖数据迁移工具做增量同步有哪些易错点?调整数据迁移工具策略怎么保证断点续传可靠?reasonsummer8 小时前
【办公类-120-01】20260812闵行区幼儿园概况表的数据统计(户籍、五类性质、优抚子女)邀星月为媒8 小时前
高阶加餐 08|Prompt 故障定位与可观测性:模型突然变差时,别再靠“重新写一遍 Prompt”解决梦想的旅途28 小时前
企业微信API实战:Python自动化消息推送