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助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
GBASE4 小时前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)ZhengEnCi10 小时前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器ZhengEnCi11 小时前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器曲幽11 小时前
你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南用户83580861879112 小时前
基于 Self-RAG 与列表级重排序的进阶 RAG 系统设计与实现xiezhr14 小时前
逛GitHub发现了一款免费的带AI功能的数据库管理工具Warson_L1 天前
Python `Annotated` 与 LangGraph Reducer 学习笔记韩师傅1 天前
海天线算法的前世今生韩师傅1 天前
当你的甲方设备过烂,要如何快速出效果?Warson_L1 天前
LangGraph的MessageState and HumanMessage