Grant a user permission to only view a MySQL view and nothing else

database-permissions, mysql, permissions, sql-grant, view

Solution

`GRANT SELECT ON database1.view1 TO 'someuser'@'somehost';`

Problem

This question was originally using MySQL 5.1.44, but is applicable to MySQL 8.0+ too. Let's say I have a table with records inserted by different users of my application. How can I give a specific user access to only see his/her records in that table? I've thought about creating a `VIEW` with his/her records, but I don't know how to create a MySQL user that can only see that `VIEW`. So, is it possible to create a MySQL user that only has access to a single `VIEW`? Can this user also be made so they read-only access to that `VIEW`? Thanks! PS: What I call users in my example are really subsidiary offices that want to access their records with their own applications.

Original source