mysql中修改用户密码与权限更新的实践

发布时间 - 2026-01-27 00:00:00    点击率:
MySQL 8.0+ 修改密码须用 ALTER USER,不可 UPDATE;必须指定主机名并满足密码策略;权限变更后需显式执行 FLUSH PRIVILEGES;创建用户与授权应分离;远程访问需检查 bind-address、防火墙及云安全组。

MySQL 8.0+ 修改用户密码必须用 ALTER USER

MySQL 5.7 以前还能用 UPDATE mysql.user 直接改 password 字段,8.0 起字段名变成 authentication_string,且密码哈希逻辑变了,直接 UPDATE 会导致用户无法登录。最稳妥的方式是走官方授权语句:

ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'NewPass123!';

注意两点:
• 必须带主机名(如 'myuser'@'localhost'),不能只写用户名
• 密码要满足默认的密码策略(至少 8 位、大小写字母+数字+特殊字符),否则报错 ERROR 1819 (HY000)

如果策略太严想临时放宽,可执行:

SET GLOBAL validate_password.length = 6;
SET GLOBAL validate_password.policy = LOW;

修改权限后必须显式执行 FLUSH PRIVILEGES

GRANTREVOKE 改完权限,MySQL 不会自动重载内存中的权限缓存。不刷新的话,新权限对已连接的会话无效,新连接也可能延迟生效(取决于缓存刷新时机)。

正确流程是:

  • 先执行权限变更语句,例如:
    GRANT SELECT, INSERT ON mydb.* TO 'myuser'@'localhost';
  • 再立即执行:
    FLUSH PRIVILEGES;

常见误区:以为 GRANT 自带刷新,或只在 MySQL 重启后才生效 —— 实际上不 FLUSH,哪怕断开重连,权限仍可能沿用旧缓存。

CREATE USERGRANT 分开执行更可控

很多教程把创建用户和赋权写成一条 GRANT ... TO 'u'@'h' IDENTIFIED BY 'p',这在 MySQL 8.0+ 已被标记为过时语法,且隐含风险:

  • 如果用户已存在,该语句会静默失败(不报错但不生效)
  • 密码策略检查发生在 GRANT 阶段,失败时难以定位是创建问题还是授权问题
  • 无法单独控制账号锁定状态(ACCOUNT LOCK)或密码过期(PASSWORD EXPIRE

推荐拆解:

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'Pass123!' PASSWORD EXPIRE NEVER ACCOUNT UNLOCK;
GRANT SELECT ON mydb.users TO 'myuser'@'localhost';
FLUSH PRIVILEGES;

远程访问用户要注意 host 值和防火墙

给远程用户授权时,'myuser'@'%' 看似方便,但实际常踩两个坑:

  • MySQL 默认绑定 127.0.0.1,需确认 bind-address/etc/mysql/mysql.conf.d/mysqld.cnf 中设为 0.0.0.0 或具体内网 IP
  • Linux 防火墙(如 ufw)默认拦掉 3306 端口,得手动放行:
    sudo ufw allow 3306
  • 云服务器(如阿里云、AWS)还有安全组规则,必须额外配置入方向 TCP:3306

验证是否生效,别只在本地连,用另一台机器跑:

mysql -h your-server-ip -u myuser -p
,否则容易误判权限配置成功。

权限更新不是改完就完的

事,FLUSH PRIVILEGES 这一步漏掉,问题会卡在“明明给了权限却没效果”的模糊地带;而远程访问的层层拦截,往往让人反复怀疑 SQL 写错了。


# mysql  # linux  # word  # 防火墙  # 云服务  # 端口  # 阿里云  # 云服务器  # sql  # Error  # 远程访问  # 只在  # 报错  # 云安  # 让人  # 已被  # 设为  # 错了  # 要注意  # 给了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  如何在Ubuntu系统下快速搭建WordPress个人网站?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Laravel怎么使用artisan命令缓存配置和视图  音响网站制作视频教程,隆霸音响官方网站?  Python进程池调度策略_任务分发说明【指导】  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  无锡营销型网站制作公司,无锡网选车牌流程?  智能起名网站制作软件有哪些,制作logo的软件?  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel怎么上传文件_Laravel图片上传及存储配置  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何安全更换建站之星模板并保留数据?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何在阿里云部署织梦网站?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何快速使用云服务器搭建个人网站?  Laravel如何记录自定义日志?(Log频道配置)  如何用VPS主机快速搭建个人网站?  Python函数文档自动校验_规范解析【教程】  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何在建站主机中优化服务器配置?  Android GridView 滑动条设置一直显示状态(推荐)  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Laravel storage目录权限问题_Laravel文件写入权限设置  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel如何创建自定义Facades?(详细步骤)  EditPlus 正则表达式 实战(3)  QQ浏览器网页版登录入口 个人中心在线进入  Bootstrap CSS布局之列表  Laravel如何处理和验证JSON类型的数据库字段  iOS正则表达式验证手机号、邮箱、身份证号等  怎么用AI帮你为初创公司进行市场定位分析?  如何用美橙互联一键搭建多站合一网站?  JS实现鼠标移上去显示图片或微信二维码