在MySQL中选择所有列时,如何实现细粒度的访问控制?

在MySQL中选择所有列时,如何实现细粒度的访问控制?,mysql,security,Mysql,Security,我正在为我的老师做一些关于将非安全查询修改为安全查询的研究。 例如,查询,例如: SELECT family_name, given_name FROM reg_user INNER JOIN student ON reg_user_id = student_id; 修改后,它将如下所示: SELECT CASE auth_read_name(reg_user_id, caller_id, caller_role) WHEN 1 THEN reg_user.family_name END AS

我正在为我的老师做一些关于将非安全查询修改为安全查询的研究。 例如,查询,例如:

SELECT family_name, given_name FROM reg_user
INNER JOIN student
ON reg_user_id = student_id;
修改后,它将如下所示:

SELECT CASE auth_read_name(reg_user_id, caller_id, caller_role)
WHEN 1 THEN reg_user.family_name END AS family_name,
CASE auth_read_name(reg_user_id, caller_id, caller_role)
WHEN 1 THEN reg_user.given_name END AS given_name
FROM Student
INNER JOIN Reg_User
on reg_user = reg_user_id;
为了实现这种类型的安全性,即每当select查询中有一列时,就将这些列放入名为auth\u read\u name的安全SQL函数中。但是对于selectall,我不知道如何实现这个方法。例如:

SELECT * FROM student;

您的POV中的“不安全查询”到底是什么?如果您在这里问的是这个问题,MySQL可以选择设置列权限?
SELECT*
是没有意义的,因为您必须指定哪些列需要特权访问,而当您指定它们时,使用
SELECT*
是没有意义的。此外,这不是获得列访问权限的实用方法,因此不要为此操心太多:)在我的老师看来,学生可以“选择*”,但他是否可以查看所有列的权限基于安全策略文件,该文件采用JSON格式。