`
丁林.tb
  • 浏览: 790577 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL源码学习:MySQL中禁止跨库访问的实现

阅读更多

    先说一下这里“跨库”的意思:当前use的是db1, 仍可以使用select * from db2.table1来访问table1表。

这样使得我们需要访问同一个MySQL下的其他表时不需要多一次use,也使得多个库间的表join这样的操作成为可能。

 

 

1、              问题背景

但有些使用场景下是有禁掉这种功能的需求。比如一些开放应用托管服务,一般给一个应用指定使用一种类型的db 多个用户使用相同的应用,但每个用户访问自己的db。由于有复用连接的需求,使得不能给连接的mysqluser作库权限限制。对于指定一个新用户连接后,强行use db来控制其只能在这个db中操作。

这时候如果允许上面说的这种SQL语句,就会导致一个用户可以访问其他用户的数据。

 

2、              简单方案

1)      不允许应用端使用use语句

2)      MySQL里面对于跨表的访问,直接拒绝。

当然如果原意在中间层作SQL解析,然后判断使用的表也行。如果允许改一点MySQL代码可以如下;

  all_tables= thd.-> lex->query_tables;

if (only_self_access)

  {

    while (all_tables)

    {

      if (all_tables->db && thd->db && strcmp(all_tables->db, thd->db)!=0 && strcmp(all_tables->db, INFORMATION_SCHEMA_NAME.str) )

      {

        my_error(ER_DBACCESS_DENIED_ERROR, MYF(0),

                 thd->security_ctx->priv_user, thd->security_ctx->priv_host, all_tables->db);

        DBUG_RETURN(TRUE);

      }

      all_tables= all_tables->next_global;

    }

 

说明: only_self_access是新增的配置,表示不允许跨表访问。

         thd.-> lex->query_tables 是一个链表,依次存放当前SQL语句需要访问的表的链表(table_list)

每个表的db字段为该表所在的库。

每个表的next_global指向该语句访问的下一个表。(注意不是next_local

 

2
3
分享到:
评论

相关推荐

    PHP和MySQL Web开发第4版pdf以及源码

    6.7 在PHP中实现继承 6.7.1 通过继承使用private和protected访问修饰符控制可见性 6.7.2 重载 6.7.3 使用final关键字禁止继承和重载 6.7.4 理解多重继承 6.7.5 实现接口 6.8 类的设计 6.9 编写类代码 6.10 ...

    PHP和MySQL WEB开发(第4版)

    6.7 在PHP中实现继承 6.7.1 通过继承使用private和protected访问修饰符控制可见性 6.7.2 重载 6.7.3 使用final关键字禁止继承和重载 6.7.4 理解多重继承 6.7.5 实现接口 6.8 类的设计 6.9 编写类代码 6.10 理解PHP...

    PHP防红缩短链接网站源码,

    下载说明 : 本站所有资源(包括模板、教程、插件、源码、教程等)仅供学习与参考,请勿用于商业用途。 禁止恶意使用本站资源搭建或从事违法行为,一律使用于者承担。 本站只提供资源下载服务,不保证资源完整可用性...

    114啦网址导航源码仿360网址导航最新版.rar

    安装方法  1.上传网站安装程序到空间,空间需支持PHP,MYSQL数据库20M 即可。  2.访问网网址执行安装,按照提示填入mysql数据库信息。  3....本站源码只用于研究学习之用。请勿用于商业行为!

    2008g网购导航系统源码

    2008g购物导航是一家最好的购物导航、购物网站大全、网上购物网站,2008g购物导航提供国内所有知名网上商城(购物网站)官方入口,团购网站大全,B2C企业网上商城...17.本站源码只用于研究学习之用。请勿用于商业行为!

    仿最新360网址导航

    2.访问网网址执行安装,按照提示填入mysql数据库信息。 3.安装时默认设置后台管理 用户:admin 密码:123456 (以防安装出错建议默认安装,然后登陆后台修 改密码) 4.网站页面全后台操控,方便简单。安装后即可...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    它使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的...

    仿360导航模板 建站安装程序

    仿360网址导航系统可生成静态站新版: 为达到最佳效果,推荐使用九网互联的PHP全能空间,支持Zend、MySQL。 114啦模板仿最新360网址导航,版面清晰简洁。...19.本站源码只用于研究学习之用。请勿用于商业行为!

    115le最新仿360网址导航.rar

    114啦模板仿最新360网址导航,版面清晰简洁。 ... 360导航网QQ交流群:57830177 安装方法 1.上传网站安装程序到空间,空间需支持PHP,MYSQL数据库20M 即可。...20.本站源码只用于研究学习之用。请勿用于商业行为!

    2010年最新仿360网址导航!

    114啦模板仿最新360网址导航,版面清晰简洁。 ...安装方法 1.上传网站安装程序到空间...20.本站源码只用于研究学习之用。请勿用于商业行为! 360导航网QQ交流群:10954385 下载地址:http://u.115.com/file/f8173f9e4e

    百狐114仿360安全网最新址优化版.rar

    安装方法  为了使用更安全,建议您将后台管理目录名称由默认的 admin ...20.本站源码只用于研究学习之用。请勿用于商业行为! 百狐114网址导航www.baihu114.com 安装过程中有什么不明白的问题加QQ:349778433 咨询

    2008g购物导航网址 v1.13.rar

    2008g购物导航仿最新360网址导航,版面清晰简洁。 安装方法 1.上传网站安装程序到空间,空间需支持PHP,MYSQL数据库20M 即可。 2.访问网网址执行安装,按照...17.本站源码只用于研究学习之用。请勿用于商业行为!

    11365网址最新仿360导航.zip

    114啦模板仿最新360网址导航,版面清晰简洁。 360导航网 安装方法 1.上传网站安装程序到空间,空间需支持PHP,MYSQL数据库20M 即可。 2.访问网网址执行安装,...20.本站源码只用于研究学习之用。请勿用于商业行为!

    SpringBoot项目基于Spring Boot的在线考试系统.zip

    该系统采用典型的MVC架构,前端可能采用Angular、React或Vue.js等现代JavaScript框架,后端使用Spring Boot提供的便捷方式搭建RESTful服务,数据库通常选用MySQL或其他关系型数据库来存储用户信息、试题和考试结果等...

    SpringBoot项目在线考试.zip

    本系统采用前后端分离的架构,前端可能使用Angular、React或Vue.js等现代JavaScript框架,后端利用Spring Boot提供的快速开发能力实现RESTful服务。数据库通常选用MySQL或其他关系型数据库来存储用户信息、考试内容...

    方维订餐小秘书商业系统V2.4多城市版

    1,访问/ebak恢复数据(VPS或服务器用户,者直将“数据库”文件夹下fanwedcv2文件夹整个放在MYSQL存放数据的目录data下) 2,修改数据库连接文件public/db_config.php 3,删除public/runtime文件夹下的所有文件 4,...

    PIC CMS图片网站管理系统 v1.2.ZIP

    6.PicCMS开发组保留对源码的所有权,禁止篡改代码出售或者公开传播。 7.禁止使用本系统构建任何法律不允许的内容站点,由网站内容引起的任何责任后果与PicCMS无关。 PIC CMS图片网站管理系统1.2版本升级内容 1、...

Global site tag (gtag.js) - Google Analytics