午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

關(guān)于MySQL繞過(guò)授予information_schema中對(duì)象時(shí)報(bào)ERROR 1044(4200)錯(cuò)誤

瀏覽:63日期:2023-10-10 13:02:29

這個(gè)問(wèn)題是微信群中網(wǎng)友關(guān)于MySQL權(quán)限的討論,有這么一個(gè)業(yè)務(wù)需求(下面是他的原話):

因?yàn)镸ySQL的很多功能都依賴主鍵,我想用zabbix用戶,來(lái)監(jiān)控業(yè)務(wù)數(shù)據(jù)庫(kù)的所有表,是否都建立了主鍵。

監(jiān)控的語(yǔ)句是:

FROM information_schema.tables t1 LEFT OUTER JOIN information_schema.table_constraints t2 ON t1.table_schema = t2.table_schema AND t1.table_name = t2.table_name AND t2.constraint_name IN ( ’PRIMARY’ ) WHERE t2.table_name IS NULL AND t1.table_schema NOT IN ( ’information_schema’, ’myawr’, ’mysql’, ’performance_schema’, ’slowlog’, ’sys’, ’test’ ) AND t1.table_type = ’BASE TABLE’

但是我不希望zabbix用戶,能讀取業(yè)務(wù)庫(kù)的數(shù)據(jù)。一旦不給zabbix用戶讀取業(yè)務(wù)庫(kù)數(shù)據(jù)的權(quán)限,那么information_schema.TABLES 和 information_schema.TABLE_CONSTRAINTS 就不包含業(yè)務(wù)庫(kù)的表信息了,也就統(tǒng)計(jì)不出來(lái)業(yè)務(wù)庫(kù)的表是否有建主鍵。有沒(méi)有什么辦法,即讓zabbix不能讀取業(yè)務(wù)庫(kù)數(shù)據(jù),又能監(jiān)控是否業(yè)務(wù)庫(kù)的表沒(méi)有建立主鍵?

首先,我們要知道一個(gè)事實(shí):information_schema下的視圖沒(méi)法授權(quán)給某個(gè)用戶。如下所示

mysql> GRANT SELECT ON information_schema.TABLES TO test@’%’;ERROR 1044 (42000): Access denied for user ’root’@’localhost’ to database ’information_schema’

關(guān)于這個(gè)問(wèn)題,可以參考mos上這篇文章:Why Setting Privileges on INFORMATION_SCHEMA does not Work (文檔 ID 1941558.1)

APPLIES TO:

MySQL Server - Version 5.6 and later

Information in this document applies to any platform.

GOAL

To determine how MySQL privileges work for INFORMATION_SCHEMA.

SOLUTION

A simple GRANT statement would be something like:

mysql> grant select,execute on information_schema.* to ’dbadm’@’localhost’;

ERROR 1044 (42000): Access denied for user ’root’@’localhost’ to database ’information_schema’

The error indicates that the super user does not have the privileges to change the information_schema access privileges.

Which seems to go against what is normally the case for the root account which has SUPER privileges.

The reason for this error is that the information_schema database is actually a virtual database that is built when the service is started.

It is made up of tables and views designed to keep track of the server meta-data, that is, details of all the tables, procedures etc. in the database server.

So looking specifically at the above command, there is an attempt to add SELECT and EXECUTE privileges to this specialised database.

The SELECT option is not required however, because all users have the ability to read the tables in the information_schema database, so this is redundant.

The EXECUTE option does not make sense, because you are not allowed to create procedures in this special database.

There is also no capability to modify the tables in terms of INSERT, UPDATE, DELETE etc., so privileges are hard coded instead of managed per user.

那么怎么解決這個(gè)授權(quán)問(wèn)題呢? 直接授權(quán)不行,那么我們只能繞過(guò)這個(gè)問(wèn)題,間接實(shí)現(xiàn)授權(quán)。思路如下:首先創(chuàng)建一個(gè)存儲(chǔ)過(guò)程(用戶數(shù)據(jù)庫(kù)),此存儲(chǔ)過(guò)程找出沒(méi)有主鍵的表的數(shù)量,然后將其授予test用戶。

DELIMITER //CREATE DEFINER=`root`@`localhost` PROCEDURE `moitor_without_primarykey`()BEGIN SELECT COUNT(*) FROM information_schema.tables t1 LEFT OUTER JOIN information_schema.table_constraints t2 ON t1.table_schema = t2.table_schema AND t1.table_name = t2.table_name AND t2.constraint_name IN ( ’PRIMARY’ ) WHERE t2.table_name IS NULL AND t1.table_schema NOT IN ( ’information_schema’, ’myawr’, ’mysql’, ’performance_schema’, ’slowlog’, ’sys’, ’test’ ) AND t1.table_type = ’BASE TABLE’;END //DELIMITER ; mysql> GRANT EXECUTE ON PROCEDURE moitor_without_primarykey TO ’test’@’%’;Query OK, 0 rows affected (0.02 sec)

此時(shí)test就能間接的去查詢information_schema下的對(duì)象了。

mysql> select current_user();+----------------+| current_user() |+----------------+| test@% |+----------------+1 row in set (0.00 sec) mysql> call moitor_without_primarykey;+----------+| COUNT(*) |+----------+| 6 |+----------+1 row in set (0.02 sec) Query OK, 0 rows affected (0.02 sec)

查看test用戶的權(quán)限。

mysql> show grants for test@’%’;+-------------------------------------------------------------------------------+| Grants for test@% |+-------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO `test`@`%` || GRANT EXECUTE ON PROCEDURE `zabbix`.`moitor_without_primarykey` TO `test`@`%` |+-------------------------------------------------------------------------------+2 rows in set (0.00 sec)

到此這篇關(guān)于關(guān)于MySQL繞過(guò)授予information_schema中對(duì)象時(shí)報(bào)ERROR 1044(4200)錯(cuò)誤的文章就介紹到這了,更多相關(guān)mysql ERROR 1044(4200)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 中文字幕av一区 | 国产成人午夜 | 午夜影院一区二区 | 精品国自产在线观看 | 激情丁香婷婷 | 免费观看的av网站 | 91无套直看片红桃在线观看 | 亚洲精品理论 | 国产乱码精品1区2区3区 | 朝桐光av一区二区三区 | 亚洲性视频 | 日本精品在线播放 | 手机在线亚洲 | 精品综合久久 | 国产成人精品亚洲男人的天堂 | 精品国产18久久久久久 | jizz国产精品 | 粉嫩av四季av绯色av | 人成精品 | 鲁大师2在线观看免费播放高清 | 无套白嫩进入乌克兰美女 | 自拍视频网站 | 成人网在线免费观看 | 欧美人与性动交a欧美精品 天天干天天天天 | 午夜在线观看视频网站 | 色av影院| 欧美整片第一页 | 一二三四国产 | 手机天堂av| 亚洲成人黄色片 | 亚洲热热 | 亚洲成人一区在线 | 国产小视频网站 | 欧美日韩一区二区在线观看视频 | 麻豆做爰免费观看 | 天天做天天爱天天爽综合网 | 一区二区三区高清不卡 | 日韩小视频在线观看 | 韩国一级黄色录像 | 久久福利一区 | 91ts人妖另类精品系列 |