Esto es bastante común, y yo lo hice en la última empresa en la que trabajé.
Una forma de hacerlo es creando una tabla que indique qué opciones están disponibles. Sería algo así como:
Código SQL
[-]
CREATE TABLE `usuario_menu`
UsuarioId AS INT,
OpcionId AS INT;
[off_topic] madre mía, que ya se me ha olvidado cómo programar SQL, menudas navidades...
[/off_topic]
De esta forma:
Código SQL
[-]SELECT OpcionId FROM usuario_menu WHERE UsuarioId = $Id;
Evidentemente "$Id" es el identificador del usuario.
Otra posibilidad es hacer lo mismo, pero en vez de asociar a usuarios, asociándolo a grupos de usuarios.