I want to give permissions only to specificated rows in mysql. table: messages cols: from, to, message
GRANT ALL ON db.messages TO 'jeffrey'@'localhost' WHERE messages.from = 'jeffrey' OR messages.to = 'jeffrey' ;
With a thing like this the user only can access only his own messages.
Do you know how to solve the problem?
Per the GRANT
command, there is no ability to set permission-levels on a per-row basis (table/columns, yes - but not the individual rows).
You could setup a View to handle this though and grant the user permission to access the view instead.
A view such as the following should give you the messages based on the current user:
CREATE VIEW user_messages AS
SELECT *
FROM messages
WHERE
messages.from = user() OR messages.to = user();
And the grant-statement should be similar:
GRANT ALL ON db.user_messages TO 'jeffrey'@'localhost';
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With