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 内容必须是:[client]user=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助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
重生之小比特1 小时前
【MySQL 数据库】视图人道领域1 小时前
【LeetCode刷题日记】递归与回溯实战 257.二叉树的所有路径——一篇文章彻底搞懂回溯AC赳赳老秦1 小时前
OpenClaw与飞书多维表格联动:自动同步工作数据、生成统计图表,实现高效管理黑贝是条狗1 小时前
注册表破解chrome,edge阻止浏览器连接本地websocketsichuanwww1 小时前
python中的websockets简单样例爱喝水的鱼丶1 小时前
SAP-ABAP:第二篇:实操避坑篇——ABAP Hello World程序创建、语法校验到调试运行全流程指南m0_609160491 小时前
mysql如何避免大批量数据修改锁全表_使用分批提交技术Languorous.1 小时前
MySQL 零基础安装教程(Windows11/10,图文分步,新手零失败)wang3zc1 小时前
golang如何实现工作流引擎_golang工作流引擎实现要点