iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库中访问控制的实现原理是什么
  • 919
分享到

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

2024-04-02 19:04:59 919人浏览 安东尼
摘要

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

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

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

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

1. 用户管理

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

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

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数据库中访问控制的实现原理是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库中访问控制的实现原理是什么

本文链接: https://www.lsjlt.com/news/56316.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql中外码怎么设置
    sql 中外码设置步骤:确定父表和子表。在子表中创建外码列,引用父表主键。使用 foreign key 约束将外码列链接到父表主键。指定引用动作,以处理父表数据更改时的子表数据操作。 ...
    99+
    2024-05-15
  • sql中having是什么
    having 子句用于过滤分组结果,应用于分组后的数据集。它与 where 子句类似,但基于分组结果而不是原始数据。用法:1. 过滤分组后的聚合值。2. 根据分组后的...
    99+
    2024-05-15
  • 在sql中空值用什么表示
    在 sql 中,空值表示未知或不存在的值,可使用 null、空字符串或特殊值表示。处理空值的方法包括使用操作符(is null/is not null)、coalesce 函数(返回第一...
    99+
    2024-05-15
    oracle
  • sql中number什么意思
    sql 中的 number 类型用于存储数值数据,包括小数和整数,特别适合货币、度量和科学数据。其精度由 scale(小数点位数)和 precision(整数字段和小数字段总位数)决定。...
    99+
    2024-05-15
  • sql中空值赋值为0怎么写
    可以通过使用 coalesce() 函数将 sql 中的空值替换为指定值(如 0)。coalesce() 的语法为 coalesce(expression, replacement),其...
    99+
    2024-05-15
  • sql中revoke语句的功能
    revoke 语句用于撤销指定用户或角色的权限或角色成员资格。可撤销的权限包括 select、insert、update、delete 等,撤销的对象类型包括表、视图、存储过程...
    99+
    2024-05-15
    敏感数据
  • sql中REVOKE是什么意思
    revoke 是 sql 中用于撤销用户或角色对数据库对象权限的命令。它通过撤销权限类型、对象级别和目标权限来实现:权限类型:撤销 select、insert、update、d...
    99+
    2024-05-15
  • sql中sp是什么意思
    sql中的sp是存储过程的缩写,它是一种预编译的、已命名的sql语句块,存储在数据库中,可以被用户通过简单命令调用。存储过程的特点有:可重用性、模块化、性能优化、安全性、事务支持。存储过...
    99+
    2024-05-15
    敏感数据
  • sql中references是什么意思
    sql 中的 references 关键字用于在外键约束中定义表之间的父-子关系。外键约束确保子表中的行都引用父表中存在的行,从而维护数据完整性。references 语法的格式为:fo...
    99+
    2024-05-15
  • sql中判断字段为空怎么写
    sql 中可通过 4 种方法判断字段是否为空:1)is null 运算符;2)is not null 运算符;3)coalesce() 函数;4)case 语句。例如,查询所有 colu...
    99+
    2024-05-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作