仅方便访问特定查询结果的最佳方法



我目前正在实施一个监控系统,其中一部分包括监控MySQL数据库的某些方面,例如:

  • 给定 MySQL 实例的复制状态(sys 表(
  • 数据库 1 的表 x (db1.tableX( 中的记录数
  • 另一个数据库的表中给定属性的总和 (db2.tableY.column3(

这 3 件事可以使用非常简单的查询找到:

SELECT viable_candidate FROM sys.gr_member_routing_candidate_status
SELECT COUNT(1) FROM db1.tableX
SELECT SUM(column3) FROM db2.tableY

但是,这要求用户帐户至少具有对 3个整个数据库/表的读取访问权限。

有没有办法限制给定查询结果的访问?我想创建一个额外的数据库,该数据库以某种方式链接到上述 3 个查询的输出,然后创建一个只能访问该数据库的新用户,但我不确定这项技术是什么,或者它将如何工作?

提前感谢!

基于每个查询创建一个视图,然后仅授予对该视图的选择权限。

例:

CREATE VIEW dbo.view_name AS
SELECT viable_candidate 
FROM sys.gr_member_routing_candidate_status

然后

GRANT SELECT ON dbo.view_name TO 'user1'@'localhost'

最新更新