千家信息网

MySQL数据库中访问控制的实现原理是什么

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇文章为大家展示了MySQL数据库中访问控制的实现原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MySQL 访问控制实际上由两个功能模块共同组成,
千家信息网最后更新 2025年02月01日MySQL数据库中访问控制的实现原理是什么

本篇文章为大家展示了MySQL数据库中访问控制的实现原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

MySQL 访问控制实际上由两个功能模块共同组成,一个是负责"看守 MySQL 大门"的用户管理模块,另一个就是负责监控来访者每一个动作的访问控制模块。用户管理模块决定用户是否能登陆数据库,而访问控制模块则决定在数据库中具体可以做的事。下面是一张 MySQL 中实现访问控制的简单流程图。

1. 用户管理

在 MySQL 中,用户访问控制部分的实现比较简单,所有授权用户都存放在一个系统表中:mysql.user,当然这个表不仅仅存放了授权用户的基本信息,还存放有部分细化的权限信息。用户管理模块需要使用的信息很少,主要就是Host,User,Password 这三项,都在 mysql.user 表中

2. 访问控制

当客户端连接通过用户管理模块的验证,可连接上 MySQL Server 之后,就会发送各种Query 和 Command 给 MySQL Server,以实现客户端应用的各种功能。当 MySQL 接收到客户端的请求之后,访问控制模块是需要校验该用户是否满足提交的请求所需要的权限。权限校验过程是从最大范围的权限往最小范围的权限开始依次校验所涉及到的每个对象的每个权限。

在验证所有所需权限的时候,MySQL 首先会查找存储在内存结构中的权限数据,首先查找 Global Level 权限,如果所需权限在 Global Level 都有定义(GRANT 或者 REVOKE),则完成权限校验(通过或者拒绝),如果没有找到所有权限的定义,则会继续往后查找Database Level 权限,进行 Global Level 未定义的所需权限的校验,如果仍然没有能够找到所有所需权限的定义,MySQL 会继续往更小范围的权限定义域查找,也就是 Table Level,最后则是 Column Level 或者 Routine Level。

3. 五个授权表

mysql数据库包含五个主要的授权表。

  • user表:包含用户帐户和全局权限列。MySQL使用user表来接受或拒绝来自主机的连接。 在user表中授予的权限对MySQL服务器上的所有数据库都有效。

  • db表:包含数据库级权限。MySQL使用数据库表来确定用户可以访问哪个数据库以及哪个主机。在db表中的数据库级授予的特权适用于数据库,所有对象属于该数据库,例如表,触发器,视图,存储过程等。

  • table_priv和columns_priv表:包含表级和列级权限。 在table_priv表中授予的权限适用于表及其列,而在columns_priv表中授予的权限仅适用于表的特定列。

  • procs_priv表:包含存储函数和存储过程的权限。

4. 参考访问授权策略

这里附一份我平时做mysql数据库授权的策略,仅供参考。

//针对root账号 set global validate_password_policy=0; --设置判断密码的标准基于密码的长度(validate_password_length) grant all privilges on *.* to root@'localhost' identified by 'password'; grant all privilges on *.* to root@'%' identified by 'password'; --根据具体情况决定是否开启  //针对日常运维账号 grant select, insert, update, delete on database_name.* to hwb@'%' identified by 'password'; grant create,alter,drop,references on database_name.* to hwb@'%';  grant create temporary tables on database_name.* to hwb@'%';  grant index on database_name.* to hwb@'%';  grant create view on database_name.* to hwb@'%';  grant show view on database_name.* to hwb@'%';  grant create routine on database_name.* to hwb@'%'; -- 查看存储过程、函数状态  grant alter routine on database_name.* to hwb@'%'; --删除存储过程、函数 grant execute on database_name.* to hwb@'%'; grant all privileges on mysql.* to hwb@'%' identified by 'password'; --不增加不能对其他用户的函数或存储过程做操作  //针对应用连接账号 grant all privileges on database_name.* to hwb2@'应用服务器IP' identified by 'password'; grant all privileges on mysql.* to hwb2@'应用服务器IP'; --不增加无法对其他用户的函数或存储过程做操作  //针对只读账号(导出数据库权限) grant select on database_name.* to hwbread@'%' identified by 'hwbread123'; grant select on mysql.* to hwbread@'%'; grant show view on database_name.* to hwbread@'%'; grant file on *.* to hwbread@'%'; --if database_name.* will ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

上述内容就是MySQL数据库中访问控制的实现原理是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

权限 数据 数据库 用户 控制 模块 存储 过程 函数 管理 账号 应用 信息 客户 就是 服务器 服务 原理 主机 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 QQ手机数据库 丽水企业软件开发工程师 加载数据库驱动时抛出异常 福州钱桥互联网科技有限公司 市北区微信小程序软件开发 计算机网络技术大专薪资 数据库的公用文件表在哪个位置 德宏职业学院计算机网络技术 手机一直显示服务器安全证书 mysql数据库主备切换 软件开发小公司好还是外包好 平安集团互联网科技公司 数据库应用技术答案a卷 iop 数据库 麒麟系统部署oracle数据库 邯郸交友软件开发定做 软件开发公司的产品运营 软件开发架构图模板下载 信息网络安全产生的内部原因 铜陵网络安全指挥中心 上海市企业服务云软件开发 数据库中的目数是什么 数据库设计说明书外部设计 有效防范网络安全风险 展示网络安全知识 旭游网络技术有限公司 三维图数据库连接关联 学生计算机网络安全 大学生强化网络安全征文 SPJ数据库中有供应商关系S
0