De acordo com o
GRANT
comando, não há capacidade de definir níveis de permissão por linha (tabela/colunas, sim - mas não as linhas individuais). Você pode configurar uma Visualização para lidar com isso e conceder ao usuário permissão para acessar a exibição.
Uma visualização como a seguinte deve fornecer as mensagens com base no usuário atual:
CREATE VIEW user_messages AS
SELECT *
FROM messages
WHERE
messages.from = user() OR messages.to = user();
E a declaração de concessão deve ser semelhante:
GRANT ALL ON db.user_messages TO 'jeffrey'@'localhost';