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

时间:2018-10-11 13:45:54

标签: mysql

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

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

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

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

但是,这随后需要创建一个具有至少3个整个数据库/表的读取权限的用户帐户。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

Create a view based on each query,然后是grant only a select permission to such view

示例:

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'