如何在MySQL表中隐藏用户列

时间:2015-02-19 16:43:09

标签: mysql database privileges grant

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

我有一个用户。我们会说用户的名字是'用户'。我只是希望这个用户无法在我的MySQL数据库中看到一个列。

我正在使用HeidiSQL。似乎没有办法使用GUI来禁止用户查看表中的列。所以我认为以下内容可行;

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'@'%';

但它没有。每当我刷新权限并通过用户登录时,我仍然会看到我不希望用户看到的列。

究竟是什么算法?我想假设这是可能的。

提前致谢,

- 安东尼

1 个答案:

答案 0 :(得分:1)

我们可以在列级别授予/撤销权限,因为MySQL在mysql.columns_priv表中存储列权限,并且应该应用于表中的单个列。

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