mysql-GRANT+;哪里

mysql-GRANT+;哪里,mysql,grant,Mysql,Grant,我只想给mysql中指定的行授予权限。 表:信息 科尔斯:从,到,信息 将db.messages上的所有消息授予'jeffrey'@'localhost',其中messages.from='jeffrey'或messages.TO='jeffrey' 有了这样的东西,用户只能访问自己的消息 你知道如何解决这个问题吗?MySQL没有行级权限。您有数据库、表和列。不是排。对于行级别,请使用视图和/或适当的where子句。根据命令,无法按行设置权限级别(表/列,是-但不能设置单个行) 您可以设置一个来

我只想给mysql中指定的行授予权限。 表:信息 科尔斯:从,到,信息

将db.messages上的所有消息授予'jeffrey'@'localhost',其中messages.from='jeffrey'或messages.TO='jeffrey'

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


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

MySQL没有行级权限。您有数据库、表和列。不是排。对于行级别,请使用视图和/或适当的
where
子句。

根据命令,无法按行设置权限级别(表/列,是-但不能设置单个行)

您可以设置一个来处理此问题,并授予用户访问视图的权限

以下视图应根据当前用户为您提供消息:

CREATE VIEW user_messages AS
    SELECT *
    FROM messages
    WHERE
        messages.from = user() OR messages.to = user();
赠款声明应类似:

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

如果需要行级权限,则必须添加自己的机制。 通常它是一个整数,用作位模式

例如,0x0002是主管级访问

用户Fred是主管,因此其权限为0x0002,用户ID为23

然后像

Select * From SomeTable
inner Join myUsers On MyUsers.UserID = 23 and (SomeTable.PermissionID & MyUsers.PermissionID) > 0
因此,Fred只能访问设置了位1(Big-endian!)的permissionId行


尽管它是需要维护的主要PIA,但请仔细思考。

它工作正常,我只添加了
子字符串_索引(USER(),'@',1)
,所以我只有
根目录
,而不是
root@localhost
太棒了!我以前从未这样做过,但我一直想自己做这样的事情!我已经将它与jquery和php连接起来,一切都很好。:)