先说一下这里“跨库”的意思:当前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)
分享到:
相关推荐
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 ...
**二、获取MySQL源码** 由于标签中提到了"源码",我们将采用源码编译的方式进行安装。首先,访问MySQL官方网站(https://dev.mysql.com/downloads/mysql/)下载最新的源码包。解压下载的文件到一个合适的目录,例如 ...
`gcc`是编译器,`openssl-devel`和`cmake`用于构建MySQL源码,`make`是必备的构建工具,`libaio-devel`则是MySQL异步I/O操作所需的库。 接下来,下载MySQL的源代码。你可以从MySQL官方网站或者通过`wget`命令下载。...
1. 运行`mysql_secure_installation`命令,可以进一步优化安全性,如删除匿名用户、禁止root远程登录等。 九、MySQL客户端工具 1. MySQL Workbench:官方提供的图形化管理工具,用于数据库设计、管理和开发。 2. ...
MySQL是一种广泛使用的开源关系型数据库管理系统,以其高效、稳定和易于管理的特点,深受开发者和企业的喜爱。本篇文章将深入探讨MySQL的安装过程,包括...在使用过程中,不断学习和实践是提升MySQL管理技能的关键。
MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),它以其高效、稳定和易于扩展的特性在Web开发领域中占据重要地位。这份“MYSQL中文手册完全版”是开发者和数据库管理员的重要参考资料,提供了全面的MySQL...
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...
在这个项目中,`.htaccess`可能被用来优化URL结构,实现伪静态,提高SEO友好性。 `index.html`是网站的首页,它通常是用户访问网站时首先看到的页面。在这个B2B网站中,`index.html`可能包含公司的品牌展示、产品...
3. 安全配置:源码中可能包含了Spring Security的配置类,定义了哪些URL需要保护,以及对应的访问策略。 四、角色与权限的关系 源码可能使用关系型数据库(如MySQL)存储用户、角色和权限之间的关联。通过Role-...
标题中的“Java-SpringBoot的学生在线考试系统毕业设计源码(源代码+论文)”表明这是一个基于Java编程语言和SpringBoot框架开发的项目,主要用于学生在线考试的毕业设计。这个系统包含完整的源代码和相关的论文文档,...
### 运维新手学习手册知识点概览 #### 1. LAMP(PHP环境配置) - **LAMP**:指的是Linux + Apache + MySQL + PHP组成的Web服务环境。 - **Linux**:作为操作系统基础,提供了安全稳定的运行环境。 - **Apache**...
在`mysql的备份.doc`中,学习如何定期备份数据库至关重要,可以使用`mysqldump`命令进行逻辑备份,或者使用InnoDB引擎的物理备份功能。 数据库的配置在`web的配置.doc`中可能有所提及。你需要创建数据库和对应的...
6. **其他辅助文件**:如robots.txt(搜索引擎爬虫指南),.htaccess(Apache服务器的配置文件,用于URL重写、禁止访问等)。 这个懒人网址导航系统可能具备以下特性: 1. **用户友好**:简洁的界面设计,易于导航...
7. **安全机制**:`.htaccess`文件通常用于设置Apache服务器的访问规则,可以实现URL重写、防盗链、禁止目录浏览等安全措施。了解基本的Web安全知识,如防止SQL注入、XSS攻击等,对于保护源码和用户数据至关重要。 ...
源码中的关键组件可能包括用户管理模块、论坛板块管理、发帖和回帖功能、搜索功能以及权限控制等。用户管理通常涉及注册、登录、个人信息设置等;论坛板块则允许管理员划分不同的话题领域,如技术讨论、生活分享等;...
在本项目中,可能使用了Spring Security或者自定义的认证逻辑来实现用户登录和权限分配,确保只有授权的操作员能访问系统。 4. **操作员管理**: 涉及到对系统操作员的信息管理,包括添加、删除、修改操作员信息,...
`.htaccess`文件是Apache服务器配置的一部分,用于控制目录级别的访问权限,比如重定向、URL美化、禁止索引等。在这个系统中,它可能被用来优化SEO、保护敏感文件或实现特定的URL路由规则。 `composer.json`和`...
下载说明 : 本站所有资源(包括模板、教程、插件、源码、教程等)仅供学习与参考,请勿用于商业用途。 禁止恶意使用本站资源搭建或从事违法行为,一律使用于者承担。 本站只提供资源下载服务,不保证资源完整可用性...
在线考试系统是一个基于Web的应用程序,它允许用户通过互联网进行...通过对这个源码的学习和分析,不仅可以了解在线考试系统的实现原理,还能加深对C#和.NET Framework 2.0的理解,为今后的Web开发工作积累宝贵经验。
在使用提供的".NET 企业门户网站源码"时,请遵循“仅供学习,禁止商用”的原则,尊重知识产权,避免不必要的法律风险。同时,学习过程中应注重理论与实践相结合,不断加深对.NET框架及企业级网站开发的理解。 总结...