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