【MYSQL】MYSQL学习的一大重点:用户与权限管理 📅 2026/8/13 12:49:32 个人主页艾莉丝努力练剑❄专栏传送门《C语言》《数据结构与算法》《C/C干货分享学习过程记录》《Linux操作系统编程详解》《笔试/面试常见算法从基础到进阶》《Python干货分享》⭐️为天地立心为生民立命为往圣继绝学为万世开太平 艾莉丝的简介文章目录1 ~ MySQL 用户管理1.1 用户信息存储1.1.1 底层原理1.1.2 user 表核心字段1.1.3 用户查询语句1.2 创建用户1.2.1 标准语法唯一推荐方式1.2.2 本地用户创建1.2.3 远程用户创建1.2.4 新建用户默认权限1.3 删除用户1.3.1 标准语法1.3.2 示例1.4 修改用户密码1.4.1 管理员修改指定用户密码1.4.2 用户修改自身密码1.5 权限刷新机制1.5.1 语法1.5.2 生效逻辑2 ~ MySQL 权限管理2.1 权限体系2.1.1 权限粒度作用范围2.1.2 核心权限清单2.2 权限授予GRANT2.2.1 标准语法2.2.2 实操示例2.3 权限回收REVOKE2.3.1 标准语法2.3.2 实操示例2.4 权限查看2.5 权限生效规则3 ~ 安全最佳实践结尾1 ~ MySQL 用户管理1.1 用户信息存储1.1.1 底层原理MySQL 的所有用户账号、密码、权限信息均存储在mysql 系统数据库的 user 表中。用户管理的本质就是对该系统表进行增删改查操作官方 SQL 语句是对底层表操作的封装。1.1.2 user 表核心字段字段名作用说明host允许用户登录的主机地址localhost表示仅本地登录指定 IP 表示仅该地址可登录%为通配符表示任意主机user用户名authentication_string哈希加密后的用户密码无明文存储*_priv系列字段对应各项权限Y表示拥有权限N表示无权限password_expired密码是否过期account_locked账号是否被锁定1.1.3 用户查询语句-- 切换至mysql系统库USEmysql;-- 查询用户核心信息SELECThost,user,authentication_stringFROMuser;-- 查看user表完整结构DESCuser;1.2 创建用户1.2.1 标准语法唯一推荐方式CREATEUSER用户名登录主机IDENTIFIEDBY密码;密码以明文输入MySQL 自动通过哈希算法加密后存入系统表不会明文存储用户名与主机地址为一个整体同一用户名对应不同主机视为不同账号1.2.2 本地用户创建仅允许从数据库所在服务器本机登录安全性最高-- 创建用户whb仅本地登录密码为12345678CREATEUSERwhblocalhostIDENTIFIEDBY12345678;1.2.3 远程用户创建允许从外部主机登录-- 允许任意主机登录生产环境禁用CREATEUSERwhb%IDENTIFIEDBY123321;-- 允许指定IP登录生产环境推荐CREATEUSERwhb192.168.1.100IDENTIFIEDBY123456;注意公网访问场景下MySQL 识别的是客户端出口公网 IP而非客户端内网私有 IP直接填写私有 IP 无法生效。1.2.4 新建用户默认权限新建用户默认仅拥有USAGE权限即仅可登录数据库无法查看业务库、无法执行数据操作仅能访问information_schema等系统库。1.3 删除用户1.3.1 标准语法DROPUSER用户名登录主机;必须完整指定用户名 主机仅写用户名时 MySQL 默认匹配%会导致删除对应主机的用户失败。1.3.2 示例-- 删除本地登录的whb用户DROPUSERwhblocalhost;-- 删除允许任意主机登录的whb用户DROPUSERwhb%;1.4 修改用户密码1.4.1 管理员修改指定用户密码-- MySQL 5.7 标准语法SETPASSWORDFORwhb%PASSWORD(1234abcd);-- MySQL 8.0 标准语法PASSWORD函数已废弃ALTERUSERwhb%IDENTIFIEDBY1234abcd;1.4.2 用户修改自身密码-- MySQL 5.7 语法SETPASSWORDPASSWORD(新密码);-- MySQL 8.0 语法ALTERUSERUSER()IDENTIFIEDBY新密码;1.5 权限刷新机制1.5.1 语法FLUSHPRIVILEGES;1.5.2 生效逻辑MySQL 的权限校验基于内存中的权限数据而非直接读取磁盘系统表必须执行的场景直接通过 DML 语句修改 mysql 系统表后需手动刷新将磁盘数据加载到内存无需执行的场景使用官方 DDL 语句CREATE USER、GRANT 等操作时MySQL 自动同步内存权限2 ~ MySQL 权限管理2.1 权限体系2.1.1 权限粒度作用范围按作用域从大到小分为 4 个层级校验时按层级逐级匹配全局级*.*作用于 MySQL 实例下所有数据库的所有对象库级库名.*作用于指定数据库内的所有表、视图等对象表级库名.表名作用于指定库的指定数据表列级作用于表内指定字段需单独授权2.1.2 核心权限清单权限名称对应系统表字段权限说明SELECTSelect_priv查询表数据INSERTInsert_priv插入表数据UPDATEUpdate_priv更新表数据DELETEDelete_priv删除表数据CREATECreate_priv创建数据库、表、索引DROPDrop_priv删除数据库、表、视图ALTERAlter_priv修改表结构INDEXIndex_priv创建、删除索引GRANT OPTIONGrant_priv将自身拥有的权限授予其他用户CREATE VIEWCreate_view_priv创建视图SHOW VIEWShow_view_priv查看视图定义EXECUTEExecute_priv执行存储过程与函数FILEFile_priv读写服务器主机上的文件CREATE USERCreate_user_priv创建、删除、修改用户SHOW DATABASESShow_db_priv查看所有数据库列表SUPERSuper_priv超级管理员权限可执行各类管理操作USAGE-基础登录权限无其他操作权限新建用户默认拥有2.2 权限授予GRANT2.2.1 标准语法GRANT权限1,权限2,...ON库名.对象名TO用户名登录主机;多个权限用逗号分隔ALL PRIVILEGES表示授予指定对象上的所有权限MySQL 5.7 支持通过IDENTIFIED BY子句在授权时隐式创建用户MySQL 8.0 已废弃该用法2.2.2 实操示例-- 授予zhangsan在rootDB.user表上的所有权限GRANTALLPRIVILEGESONrootDB.userTOzhangsan%;-- 授予zhangsan在rootDB库所有表上的只读权限GRANTSELECTONrootDB.*TOzhangsan%;-- 授予查询、修改、删除三项权限GRANTSELECT,UPDATE,DELETEONrootDB.userTOzhangsan%;2.3 权限回收REVOKE2.3.1 标准语法REVOKE权限1,权限2,...ON库名.对象名FROM用户名登录主机;2.3.2 实操示例-- 回收zhangsan在rootDB.user表的INSERT权限REVOKEINSERTONrootDB.userFROMzhangsan%;-- 回收zhangsan在rootDB库下的所有权限REVOKEALLPRIVILEGESONrootDB.*FROMzhangsan%;2.4 权限查看-- 查看指定用户的全部权限SHOWGRANTSFORzhangsan%;-- 查看当前登录用户的自身权限SHOWGRANTS;2.5 权限生效规则权限变更后仅对后续新建的数据库连接生效已建立的连接不会自动更新权限需用户退出重连后生效直接修改系统表的权限变更必须执行FLUSH PRIVILEGES后才会被校验逻辑读取3 ~ 安全最佳实践最小权限原则日常操作禁止使用 root 账号为业务人员分配仅满足工作需求的最小权限严格限定登录地址禁止使用%通配符开放任意主机登录生产环境必须指定可信 IP端口防护禁止将 MySQL 端口直接暴露在公网数据库服务应仅在内网环境访问密码强度设置高复杂度密码定期更换禁止弱口令禁止直接操作系统表所有用户与权限操作必须使用官方标准 SQL 语句结尾uu们本文的内容到这里就全部结束了艾莉丝在这里再次感谢您的阅读艾莉丝努力练剑C/C Linux 底层探索者 | 一个正在努力练剑的技术博主【关注】跟随我一起深耕技术领域见证每一次成长。❤️【点赞】让优质内容被更多人看见让知识传递更有力量。⭐【收藏】把核心知识点存好在需要时随时查、随时用。【评论】分享你的经验或疑问评论区一起交流避坑不要忘记给博主“一键四连”哦“今日练剑达成”“技术之路难免有困惑但同行的人会让前进更有方向。”结语希望对学习Linux相关内容的uu有所帮助不要忘记给博主“一键四连”哦往期回顾【MYSQL】MYSQL学习的一大重点视图博主在这里放了一只小狗大家看完了摸摸小狗放松一下吧૮₍ ˶ ˊ ᴥ ˋ˶₎ა