mysql GRANT + WHERE

标签 mysql sql-grant

我只想将权限授予 mysql 中的特定行。 表:消息 cols:从,到,消息

GRANT ALL ON db.messages TO 'jeffrey'@'localhost' WHERE messages.from = 'jeffrey' OR messages.to = 'jeffrey' ;

有了这样的东西,用户只能访问他自己的消息。

你知道如何解决这个问题吗?

最佳答案

根据 GRANT命令,无法在每行的基础上设置权限级别(表/列,是的 - 但不是单独的行)。

你可以设置一个 View处理这个问题并授予用户访问 View 的权限。

如下所示的 View 应根据当前用户为您提供消息:

CREATE VIEW user_messages AS
    SELECT *
    FROM messages
    WHERE
        messages.from = user() OR messages.to = user();

grant-statement 应该是类似的:

GRANT ALL ON db.user_messages TO 'jeffrey'@'localhost';

关于mysql GRANT + WHERE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11693727/

相关文章:

mysql - 授予对 MySQL 的权限

MySql 授予错误 : 'Select' is not valid at this position

mysql - 如何限制来自特定主机的查询

oracle - 授予创建任何触发器与授予创建触发器

mysql - SQL按日期过滤器获取记录

php从用户输入显示mysql表?在 Json Restful Web 服务的部分?

mysql - 授予对 RDS 只读副本的权限

.net - 如何使用参数进行点赞操作?

java - 选择取一个结果返回null

php - 比较2个表中的2个字段并提取数据