We have a few tables: users, units, classes, schedules and marks (can be more)
WHERE id_mark IN (SELECT id_table FROM permissions WHERE table = 'marks' AND id_user = '1')
You could try to create updatable views that reference the
permissions table with a join and use WITH CHECK OPTION to "to constrain inserts or updates to rows in tables referenced by the view." (source) The permissions will be granted to the views and not to the tables themselves.
You can check if a view is updatable:
MySQL sets a flag, called the view updatability flag, at CREATE VIEW time. The flag is set to YES (true) if UPDATE and DELETE (and similar operations) are legal for the view. Otherwise, the flag is set to NO (false). The IS_UPDATABLE column in the INFORMATION_SCHEMA.VIEWS table displays the status of this flag.