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)

 

Linux源码安装Mysql5.7 mysql5.7源码安装 阅读详情

相关推荐

DBLink 跨库连接

跨库连接教程。非常好,照着搞吧。哈哈哈哈哈哈哈哈哈哈哈

【MySQL】禁止在项目中使用跨库联表查询

原因耦合度太高如果两张数据表处于不同的数据库中,那么它们在开始的时候就在不同的子系统中,也就是说在设计过程中没有很强的关联关系,在一句sql中进行关联,不符合分而治之的思想。效率问题如果两个数据库在同一个数据库实例中,查询效率还是能接受的。 但是,如果随着以后的时间推移,子系统越来越庞大,需要将数据库迁移出实例,那么,再次查询的时候就会有很大的效率问题。总结子系统之间的关联还是要本着『高内聚低耦合

Code Metaverse 7456

MySQL指定表数据库和表同步并解决跨网络问题方案

MySQL指定表数据库和表同步并解决跨网络问题方案,有了这份解决方案可以实现多租户应用单位组织下的表迁移备份,并可实现特殊网络环境下跨网段增量备份。

如何解决MySQL的跨库查询问题

目录 一、基于MySQL的federated引擎的建表方式 二、通过Mycat数据库分库分表中间件 一、基于MySQL的federated引擎的建表方式 解决方案:在机器A上的数据库A中建一个表B(其实这个快捷方式) 这当然不是跟你开玩笑啦,我们采用的是基于MySQL的federated引擎的建表方式。 建表语句示例:CREATE TABLE `table_name`(......) EN...

l1394049664的博客 5900

线性回归LinearRegression

对视频中线性回归算法的相关内容进行总结与记录 文章目录一、理论基础二、实例2.1 一元线性回归2.1.1 推导过程2.1.2 代码实现(基于numpy)2.1.3 代码实现(基于sklearn)2.2 多元线性回归2.2.1 代码实现(基于numpy)2.2.2 代码实现(基于sklearn) 一、理论基础 回归 通常是指利用某个函数,尽可能把数据样本点“串”在一起,用于描述输入变量和输出变量间的变化关系 线性回归 特点:用来把数据“串”起来的那个函数是线性的 (一元线性回归(一个自变量) &a.

邱邱邱的博客 1068

手把手教你搭建Howland电流源:从原理图到实测避坑指南(附Python数据分析)

本文详细介绍了Howland电流源的设计与实现,从原理图到实测避坑指南,涵盖电阻匹配、运放选择和PCB布局等关键环节。通过Python数据分析,展示了如何优化电路性能并解决常见问题,适合电子工程师和爱好者参考。

weixin_29291069的博客 636

mysql源码剖析–LEX结构分析

mysql源码剖析–LEX结构分析引言 引言

fs3296的博客 1857

基于线性光耦HCNR200的高压直流采样电路设计与精度优化

本文详细介绍了基于线性光耦HCNR200的高压直流采样电路设计与精度优化方法。针对直流高电压测量中的安全与干扰问题,提出采用HCNR200光耦隔离方案,实现高精度线性传输。文章深入解析电路设计关键细节,包括电阻网络、运放选型、滤波电容配置等,并提供精度优化实战技巧与常见问题排查指南,助力新能源电动汽车和高压储能系统的高压直流采样应用。

weixin_42713608的博客 580

旁注,跨库,CDN之——跨库

跨库 在我们进行sql注入的时候,经常会读出许多库。导致我们还需要在sqlmap里面使用“—current-代表”进行判断当前库是哪个。 Mysql的root、mssql的sa、oracle的sys 分别是其数据库中权限最大的账户。 一般情况下,各个数据库对于其用户权限分别对应相关权限。通常在注入mssql的时候会看到所有的库名,但是读表却只能读当前库的表名。这个时候你的权限一般为dbowner ...

温柔小薛的博客 360

[数字电路]用与非门实现BCD译码器驱动数码管

Hello,大家好。这里是xdd_core,好久不见。今天来和大家聊聊大一数字电路课程的一个课设。# Key word:BCD Decoder,Proteus8.x,NAND Gate,Digital Circuit# 流程:Proteus8.x仿真电路并绘制PCB导出Gerber文件打样,最终实物验证。# 以下为我对这个课设的report(里面对整个设计做了详细介绍,并设计了完整的验证电路) 感谢观看,仅供参考,未经作者允许,禁止转载/抄袭,本文已上传至数据库,查重必挂QAQ BCD to 7-Segme

xddcore的博客 6012

[Python人工智能] 三十六.基于Transformer的商品评论情感分析 (2)keras构建多头自注意力(Transformer)模型

本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章利用Keras构建深度学习模型并实现了情感分析。这篇文章将介绍Transformer基础知识,并通过Keras构建多头自注意力(Transformer)模型,实现IMDB电影影评数据情感分析。基础性文章,希望对您有所帮助!...

杨秀璋的专栏 4909

MySQL 跨库分页/ 分表分页/ 跨库分页,为什么这么难?

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细...

weixin_44421461的博客 371

18、偏微分方程数值计算:粘性不可压缩流与电磁学的有限元方法

本文系统介绍了偏微分方程数值计算在粘性不可压缩流与电磁学中的应用,重点探讨了稳态与非稳态Navier-Stokes问题的混合有限元方法及求解技术,包括弱形式构建、半离散与时间离散格式、牛顿迭代法等。同时,详细阐述了电磁学中Maxwell方程的有限元与时域有限差分法(FDTD)求解方法,涵盖时间谐波与时域波方程、边界条件处理、稳定性分析与误差估计。结合MATLAB代码示例和实际案例,展示了速度场、压力、电场与磁场的数值模拟过程,并通过流程图与表格对比了两类问题的方法原理、应用场景与收敛性特性。最后展望了多物理

lemon的博客 89

AI短剧创作系统源码 开发语言:PHP+MySQL 基于uniapp 无限SAAS多开源码

本文介绍了一款基于PHP+MySQL和Uniapp开发的AI短剧创作系统。该系统通过AI技术实现智能剧本生成、优化润色、自动字幕生成等功能,大幅降低短剧创作门槛。支持独立子账号运营和数据隔离;Uniapp跨端适配实现多终端创作;PHP+MySQL后端保障数据安全与运营管理。系统为短剧创业者提供从内容生产到商业变现的一站式解决方案,源码可通过专业平台获取。

duizhangdaren的博客 1393

当几何失效时:3D激光SLAM退化场景的本质与应对策略

本文探讨了3D激光SLAM在退化场景(如长廊、隧道等)中的挑战与解决方案。文章从数学角度分析了退化原因,指出信息矩阵秩亏导致某些方向约束缺失。主流算法采用不同策略应对:LeGO-LOAM利用地面约束与解耦优化;LIO-SAM/LVI-SAM通过多传感器融合补偿;FAST-LIO系列依赖IMU短期积分。新兴的RID-LIO方案创新性地利用激光强度信息增强约束,实验显示精度提升63.59%。研究表明,针对不同退化方向需要采用特异性补偿策略,而挖掘现有传感器的潜在信息维度是提升鲁棒性的有效途径。

Studying…… 620

【RH850/U2A】:HSM与APP通信(中断方式)

HSM与APP通信(中断方式)

1994

Ubuntu(WSL2) 源码安装 mysql8.0/mysql5.7

初始化文件 my.cnf 可以放在不同的文件夹下(一台机器上装多个 mysql 时,可以在不同的文件夹下创建 my.cnf),但初始化命令中使用到的 my.cnf 路径要与其保持一致;初始化完成后,找到 mysql 安装目录下的 data 文件夹,初始化密码在 mysqld.log 日志中,自行找到即可,然后用初始密码进行登陆;my.cnf文件中的 /usr/local/mysql 为mysql安装路径,根据自己情况进行更改,该mysql安装目录为:/usr/local/mysql;

热爱数据库的小胖 2152

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

mysql安装完还需要boost吗_CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装

本文来自github pages博客http://galengao.github.io/ 即www.gaohuirong.cnMysql5.7版本更新后有很多变化,比如json等,连安装都有变化,他安装必须要BOOST库,不过mysql的官网源码有带boost库的源码和不带boost库的源码两种,因此有两种安装方式,其实都是一样的,仅仅是不带boost库源码的需要单独安装boost,还有后续文章p...

weixin_33893979的博客 470

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

源码安装MySQL

源码安装MySQL 基础环境 1、关闭 firewalld、selinux内核安全机制 2、下载软件包 进入到mysql官网下载自己对应版本的mysql, 下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 我这里下载mysql-5.7.28-linux-glibc2.12-x86_64.tar版本 将下载好的源码压缩包上传至:/home目录下 (新建虚拟机时磁盘没有规划,导致home目录磁盘空间比较大,所以将mysql安装在home目

weixin_67857994的博客 1004

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

源码编译安装mysql5.7.28

mysql 源码编译5.7.28 不带boost 创建 mysql 用户 $groupadd -r -g 27 mysql $useradd -s /sbin/nologin -r -u 27 -g 27 -d /data/mysql mysql 创建mysql文件的家目录用来存放mysql数据库 $mkdir /data/mysql $chown m...

东烨#2738 2228

指令重排与禁止重排技术解析

指令重排是一种优化技术,可以提高程序执行效率。但在某些场景下,为了保证程序的正确性和数据的一致性,需要禁止指令重排。通过使用内存屏障、锁、原子操作等技术,可以实现禁止指令重排的功能。

MoneyHacksPro的博客 1056

boost mysql_CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装

本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cnMysql5.7版本更新后有很多变化,比如json等,连安装都有变化,他安装必须要BOOST库,不过mysql的官网源码有带boost库的源码和不带boost库的源码两种,因此有两种安装方式,其实都是一样的,仅仅是不带boost库源码的需要单独安装boost,还有后续文...

weixin_28737073的博客 185

2018最新福利资源博客整站源码 PHP+MYSQL 免维护可赚钱

附带安装文本,这套源码测试了下非常不错的一套源码,做起来很赚钱噢,通过出售邀请码后台可以无限生存邀请码,资源全部都是可以使用的,源码仅供学习交流使用,请勿用于非法用途,否则造成的一切后果与本站无关。帝国登陆账号:admin 密码:123456 认证码:a123456 登陆进去配置好数据库,然后选择还原数据库名a1016153951_20161019181827v9vREQ。第四步 登陆你的数据库phpmyadmin登陆进去找到wp_options这个文件打开看到里面的链接不是你的全部修改你的保存。

2301_77005288的博客 454
上一篇: 一种MySQL主从同步加速方案-改进
下一篇: MySQL部分表复制配置下存在的运维风险、原因及一种方案
iteye_621
博客等级 码龄8年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值