Selon le GRANT
commande, il n'est pas possible de définir des niveaux d'autorisation ligne par ligne (table/colonnes, oui - mais pas les lignes individuelles).
Vous pouvez configurer une Vue pour gérer cela et accorder à l'utilisateur l'autorisation d'accéder à la vue à la place.
Une vue telle que la suivante devrait vous donner les messages en fonction de l'utilisateur actuel :
CREATE VIEW user_messages AS
SELECT *
FROM messages
WHERE
messages.from = user() OR messages.to = user();
Et la déclaration de subvention devrait être similaire :
GRANT ALL ON db.user_messages TO 'jeffrey'@'localhost';