mysql版本升级中的用户权限与数据库安全设置

发布时间 - 2026-01-30 00:00:00    点击率:
MySQL 8.0权限模型变更导致GRANT失败,需先CREATE USER再GRANT;默认认证插件改为caching_sha2_password,旧客户端需适配;系统库权限收紧,监控需显式授权;升级后须重置root密码并检查账户锁定状态。

MySQL 8.0 权限模型变更导致 GRANT 失败

MySQL 8.0 彻底弃用了 mysql.user 表的直接更新方式,改用基于角色(ROLE)和分层权限(CREATE USER + GRANT)的严格模型。如果你在升级后执行类似 GRANT ALL ON *.* TO 'admin'@'%' 却报错 ERROR 1410 (42000): You are not allowed to create a user with GRANT,说明当前用户缺少 CREATE USER 权限,或未显式创建用户。

实操建议:

  • 必须先用 CREATE USER 显式建用户,再 GRANT
    CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'strong_pass_2025';
    GRANT SELECT, INSERT ON mydb.* TO 'app_user'@'localhost';
  • 旧版 INSERT INTO mysql.userUPDATE mysql.user 直接写表的方式在 8.0+ 会失败,且可能破坏数据字典一致性
  • root 用户默认不再拥有 ALL PRIVILEGES 的隐式继承;升级后需手动确认其权限是否完整:SHOW GRANTS FOR 'root'@'localhost';

authentication_plugin 默认改为 caching_sha2_password

MySQL 8.0+ 默认认证插件从 mysql_native_password 改为 caching_sha2_password,这会导致老版本客户端(如 MySQL 5.7 客户端、某些 Python 2 的 mysql-python 驱动、旧版 Navicat)连接失败,错误提示常为 Client does not support authentication protocol requested by server

实操建议:

  • 临时兼容旧客户端:建用户时指定旧插件:
    CREATE USER 'legacy_app'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd123';
  • 长期应升级客户端驱动 —— Python 推荐换用 pymysqlmysql-connector-python >= 8.0.12;Java 应用需使用 mysql-connector-j >= 8.0.16
  • 全局修改默认插件风险高,不建议改 default_authentication_plugin 配置项,容易引发管理账号登录异常

系统数据库(mysql / sys / performance_schema)权限被进一步收紧

MySQL 8.0 对 mysql 系统库的访问控制更细粒度,默认普通用户即使有 SELECT 权限也无法查询 mysql.user 表(返回空结果),而只能通过 SHOW GRANTSINFORMATION_SCHEMA 查看自身权限。这是安全加固措施,不是 bug。

实操建议:

  • 不要依赖 SELECT * FROM mysql.user 做权限审计;改用 SELECT * FROM INFORMATION_SCHEMA.ROLE_TABLE_GRANTSSHOW GRANTS FOR CURRENT_USER
  • 监控类工具(如 Zabbix、Prometheus exporter)若需读取 performance_schema,必须显式授权:GRANT SELECT ON performance_schema.* TO 'monitor'@'localhost';
  • SYS 数据库默认只对 root 和具有 SYSTEM_VARIABLES_ADMIN 权限的用户可见;普通 DBA 账号需额外授权才能运行 SYS 视图

升级后必须重置 root 密码并验证账户锁定策略

MySQL 8.0 引入了账户锁定(ACCOUNT LOCK)与失败登录跟踪机制。升级过程中若原 root 密码

为空或弱口令,新版本可能自动启用 password_history 或触发 FAILED_LOGIN_ATTEMPTS 锁定,导致无法登录。

实操建议:

  • 升级后第一时间用安全模式启动并重置 root
    mysqld --skip-grant-tables --skip-networking
    ,然后执行 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_strong_pass';
  • 检查账户状态:SELECT user, host, account_locked, password_last_changed FROM mysql.user;
  • 若需禁用锁定策略(仅测试环境),可在配置中加:default_password_lifetime = 0lock_wait_timeout = 31536000,但生产环境应保留锁定能力

密码策略、插件兼容性、权限可见性这三处最容易在升级后“静默失效”——不是报错,而是功能行为变了,得主动查、不能凭经验猜。


# mysql  # word  # python  # java  # navicat  # app  # 工具  # ai  # for  # select  # Error  # 继承  # 数据库  # dba  # bug  # prometheus  # zabbix  # 客户端  # 报错  # 旧版  # 这是  # 若需  # 你在  # 用了  # 可在  # 第一时间  # 最容易 


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


相关推荐: 音响网站制作视频教程,隆霸音响官方网站?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel如何实现用户注册和登录?(Auth脚手架指南)  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  ,交易猫的商品怎么发布到网站上去?  Android okhttputils现在进度显示实例代码  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Windows Hello人脸识别突然无法使用  郑州企业网站制作公司,郑州招聘网站有哪些?  js实现点击每个li节点,都弹出其文本值及修改  如何用花生壳三步快速搭建专属网站?  详解Android——蓝牙技术 带你实现终端间数据传输  MySQL查询结果复制到新表的方法(更新、插入)  在centOS 7安装mysql 5.7的详细教程  北京网站制作的公司有哪些,北京白云观官方网站?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  北京企业网站设计制作公司,北京铁路集团官方网站?  *服务器网站为何频现安全漏洞?  米侠浏览器网页背景异常怎么办 米侠显示修复  如何为不同团队 ID 动态生成多个“认领值班”按钮  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Python文件操作最佳实践_稳定性说明【指导】  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  C++用Dijkstra(迪杰斯特拉)算法求最短路径  高性能网站服务器部署指南:稳定运行与安全配置优化方案  深圳网站制作平台,深圳市做网站好的公司有哪些?  iOS验证手机号的正则表达式  高防服务器:AI智能防御DDoS攻击与数据安全保障  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  昵图网官方站入口 昵图网素材图库官网入口  WordPress 子目录安装中正确处理脚本路径的完整指南  如何破解联通资金短缺导致的基站建设难题?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  如何在Ubuntu系统下快速搭建WordPress个人网站?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  如何在阿里云虚拟主机上快速搭建个人网站?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  香港服务器建站指南:免备案优势与SEO优化技巧全解析  大连 网站制作,大连天途有线官网?  java ZXing生成二维码及条码实例分享  Laravel如何使用Blade模板引擎?(完整语法和示例)  如何在景安云服务器上绑定域名并配置虚拟主机?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  黑客如何通过漏洞一步步攻陷网站服务器?