MySQL权限控制的设计缺陷?.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MySQL权限控制的设计缺陷?

HYPERLINK /blog/ MySQL权限控制的设计缺陷? 这个问题是从被问到information_schema.user_privilege的IS_GRANTABLE字段问题开始查起的,就先从user_privilege表的显示规则说起。 ? 1、??????????????IS_GRANTABLE字段 用root账号执行如下语句(本文中grant后都接flush privileges,?不赘述) a) grant all privileges on *.* to `myuser`@localhost with grant option; ? b) select user,select_priv from mysql.user where user=myuser; +------------------------------+----------------------------+ | user???????????????| select_priv????????| +------------------------------+----------------------------+ | myuser????????????| Y?????????????????? ???| +------------------------------+----------------------------+ ? c) select PRIVILEGE_TYPE, IS_GRANTABLE from information_schema.user_privileges where grantee like \myuser\@\localhost\ and PRIVILEGE_TYPE = ‘SELECT’; +------------------------------+----------------------------+ | PRIVILEGE_TYPE?????| IS_GRANTABLE?????| +------------------------------+----------------------------+ | SELECT????????????? ??????| NO????????????????????? ???| +------------------------------+----------------------------+ ??? ? 说明:?从b)看myuser已经有了select_priv。而c)?中?IS_GRANTABLE是NO,这不是显示错误。?实际上,IS_GRANTABLE并非表示用户是否“拥有此权限”,而是表示用户是否拥有“将此权限赋予其他用户”的权限。它对应的是mysql.user表中的grant_priv字段,此时为NO。 ?? 2、user_privileges的显示规则 ???????当我们创建一个新用户create user myuser2;??时,在mysql.user中看到这个用户的所有权限都为NO,此时user_privileges增加一行 +---------------------+-----------------------+--------------------------+---------------------+ | GRANTEE?????| TABLE_CATALOG | PRIVILEGE_TYPE??| IS_GRANTABLE??| | myuser2@% | NULL??????????| USAGE??????????| NO???????????|. +---------------------+-----------------------+--------------------------+---------------------+ ? 什么时候显示USAGE??从 HYPERLINK /blog/ \t _blank 这篇文章中我们知道对应的显示控制代吗在sql/sql_show.cc。?对应的函数为fill_schema_schema_privileges。 简单分析源码得到规则如下: ? ????PRIVILEGE_TYPE规则: ???????a)?当该用户没有权限,或只有grant_priv的时候,PRIVILEGE_TYPE显示为USAGE; ???????b)?否则按顺序显示被赋予的权限,每行一个,这些权限包括 (UPDATE_ACL | SELECT_ACL | INSERT_ACL | DELETE_ACL | CREATE_ACL | DROP_ACL | GRANT_ACL

您可能关注的文档

文档评论(0)

2017meng + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档