欢迎光临
我们一直在努力

当MySQL绕过在information_schema中授予对象时,出现错误1044 4200

分区表场景下的结构化查询语言优化

这篇文章主要介绍了分区表场景下的结构化查询语言优化,帮助大家更好的理解和学习SQL,感兴趣的朋友可以了解下

这篇文章主要介绍了关于MySQL绕过授予信息模式中对象时报错误1044(4200)错误,本文给大家分享解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

这个问题是微信群中网友关于MySQL权限的讨论,有这么一个业务需求(下面是他的原话):

因为MySQL的很多功能都依赖主键,我想用zabbix用户,来监控业务数据库的所有表,是否都建立了主键。

监控的语句是:

从信息模式表t1

左外部联接信息_schema.table_constraints t2

开启t1。表模式=T2。表格模式

AND t1.table_name=t2.table_name

和t2。约束名输入(‘主(

其中t2。表名为空

和t1。table _ schema NOT IN(‘ information _ schema ‘,’ myawr ‘,’ mysql ‘,

performance_schema ‘,

slowlog ‘,’ sys ‘,’ test ‘)

AND t1.table_type=’BASE TABLE ‘

但是我不希望zabbix用户,能读取业务库的数据。一旦不给zabbix用户读取业务库数据的权限,那么信息模式。桌子和信息模式。表_约束就不包含业务库的表信息了,也就统计不出来业务库的表是否有建主键。有没有什么办法,即让zabbix不能读取业务库数据,又能监控是否业务库的表没有建立主键?

首先,我们要知道一个事实:信息_架构下的视图没法授权给某个用户。如下所示

MySQL授权选择信息模式.表格至;

错误1044 (42000):拒绝用户访问数据库”信息_架构”

关于这个问题,可以参考金属氧化物半导体上这篇文章:为什么在信息_架构上设置权限不起作用(文档ID 1941558.1)

APPLIES TO:

MySQL服务器-版本5.6及更高版本

本文档中的信息适用于任何平台。

GOAL

以确定MySQL特权如何为信息_架构工作。

SOLUTION

一个简单的同意语句大概是:

mysql授权选择,在信息模式上执行*“dbadm”@“localhost”

错误1044 (42000):用户根“@”本地主机访问数据库” information_schema “被拒绝

该错误表示超级用户没有更改信息模式访问权限的权限。

这似乎与拥有超级权限的根帐户通常的情况相反。

出现此错误的原因是信息模式数据库实际上是一个在服务启动时构建的虚拟数据库。

中小企业SEO排名需要注意哪些地方

对于一个有着丰富网站优化经验的人来说,让搜索引擎排名靠前是最基本的操作。但是,在日常检查的过程中,哪些步骤不能省略,哪些步骤必须花时间对网站进行评估,从提醒的角度出发,必须时刻关注。

它由表和视图组成,旨在跟踪服务器元数据,即所有表、过程等的细节。在数据库服务器中。

因此,具体来看上面的命令,试图向这个专用数据库添加挑选和执行权限。

但是,选择选项不是必需的,因为所有用户都有能力读取信息模式数据库中的表,所以这是多余的。

执行选项没有意义,因为不允许您在这个特殊的数据库中创建过程。

也没有能力在插入、更新、删除等方面修改表.所以权限是硬编码的,而不是按用户管理的。

那么怎么解决这个授权问题呢?直接授权不行,那么我们只能绕过这个问题,间接实现授权。思路如下:首先创建一个存储过程(用户数据库),此存储过程找出没有主键的表的数量,然后将其授予试验用户。

分隔符//

CREATEDEFINER=’ root `@’ localhost ` PROGRAMME ` moi tor _ with _ primary key `()

开始

选择计数(*)

从信息模式表t1

左外部联接信息_schema.table_constraints t2

开启t1。表模式=T2。表格模式

AND t1.table_name=t2.table_name

和t2。约束名输入(‘主(

其中t2。表名为空

和t1。table _ schema NOT IN(‘ information _ schema ‘,’ myawr ‘,’ mysql ‘,

performance_schema ‘,

slowlog ‘,’ sys ‘,’ test ‘)

AND t1.table _ type=’ BASE TABLE

END //

分隔符;

MySQL授权执行程序moitor _ with _ primary key TO

测试@ ‘ % ‘;

查询正常,0行受影响(0.02秒(

此时试验就能间接的去查询信息模式下的对象了。

MySQL select current _ user();

| current_user() |

|测试@%|

1行一组(0.00秒(

mysql调用moitor _不带_ primarykey

| COUNT(*) |

| 6

1行一组(0.02秒(

查询正常,0行受影响(0.02秒(

查看试验用户的权限。

MySQL显示ST @ %的授权;

|授予st@%|

|授权使用开启* .* TO `test`@`%` |

|授权执行程序` zabbix`.`moitor_

不带_primarykey` TO`test`@`%`|

2行一组(0.00秒)

至此,本文介绍了MySQL绕过information_schema中的对象授予时的ERROR 1044(4200)。有关mysql ERROR 1044(4200)的更多信息,请搜索Script House以前的文章或继续浏览下面的相关文章。希望以后大家多多支持脚本屋!

来源:剧本之家

链接:https://www.jb51.net/article/197565.ht

申请创业报告,分享创业好点子。探讨创业新机遇!

网站标签优化方法:TDK标签优化

一个网站应该有3-5个关键词。作为我们长期的优化目标,关键词的选择也很特殊。对于热门关键词,竞争激烈,往往是行业的投资重点。如果你是中小企业,可以选择一些长尾词,在投资少的情况下进行优化。

赞(0) 打赏
未经允许不得转载:斯凯创业 » 当MySQL绕过在information_schema中授予对象时,出现错误1044 4200
分享到: 更多 (0)