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助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
键盘上的猫头鹰15 分钟前
【Linux 基础教程(四)】文件内容查看、打包压缩与搜索、重定向管道及环境变量独挽离人18 分钟前
【无标题】网易CodeWave-小码哥1 小时前
AI Coding沙龙杭州站回顾,共探ISV效能利润双增长天天进步20151 小时前
Python全栈项目--社区问答平台噜噜噜阿鲁~1 小时前
python学习笔记 | 12.0、错误、调试和测试AI视觉网奇1 小时前
Bambu Studio 发现 xx个开放边gstl2 小时前
sql执行顺序SilentSamsara2 小时前
缓存策略实战:Redis + Python 多级缓存设计与失效策略本地化文档2 小时前
psycopg3-docs-l10nSafeploy安策数据2 小时前
从算法到架构:构建企业级数据库加密与密钥防护体系的实战手册