如何在 MySQL table 中对用户隐藏列

How to hide column from user in MySQL table

我认为这很容易,但显然(令我沮丧的是)事实并非如此。

我有一个用户。我们假设用户的名字是 'user'。我只是希望这个用户不能看到我的 MySQL 数据库中的列。

我正在使用 HeidiSQL。似乎没有办法使用 GUI 来禁止用户查看 table 中的列。所以我假设以下会起作用;

GRANT SELECT ON database_name.user TO 'user'@'%';
GRANT SELECT (column_name) ON database_name.table_name TO 'user'@'%';
REVOKE SELECT (column_name) ON database_name.table_name FROM 'user'@'%';

但事实并非如此。每当我刷新权限并通过用户登录时,我仍然看到我不希望用户看到的列。

这个算法到底是什么?我想假设这是可能的。

提前致谢,

-安东尼

我们可以grant/revoke列级别的权限,因为MySQL将列权限存储在mysql.columns_privtable中,并且应该在[=中应用于单个列16=].

GRANT SELECT (col1), INSERT (col1,col2) ON dbname.tblname TO 'user'@'hostname';