EDIT4: Так что, если я понимаю, у вас есть таблица пользователей, таблица ролей и ассоциация, связывающая пользователей с ролями.
Одной из идей было бы поместить значение в таблицу ролей, тогда в основном у вас будет несколько ролей для нескольких уровней администратора.
Или вы можете создать другие поля в таблице ассоциаций для параметризации ассоциации, но это повлияет на все остальные ассоциации. (или может иметь: X находится в группе B с option1 = 1, option2 = 42, option3 = NULL и обрабатывать поля параметров по-разному в зависимости от группы)
Другая идея, но я бы сделал это совершенно по-другому:
вы рассматриваете группы как пользователей, используя специальное поле вызова isGroup [True / False]. Затем вы создаете таблицу groupAssociation, в которой хранится информация о том, какой пользователь принадлежит какой группе.
Пример:
USER
--Id-- --IsGroup--
A False
B False
C True
D True
GROUPASSOCIATION
--uid-- --BelongsTo--
A C
B D
C D
Обратите внимание, что вы можете каскадно говорить, что C включен в D.
Затем вы создаете таблицу привилегий и связываете группы или пользователя с определенными привилегиями.
PRIVILEGE
--Id-- --Name--
1 Access Area 1
2 Access Area 2
3 Modify user
4 Edit on StackOverflow
PRIVILEGEASSOCIATION
--uid-- --pid--
A 4
C 2
D 1
C 3
Таким образом, у пользователя A будут все привилегии (одна прямая, две от группы C, одна для группы D, поскольку C включен в D), а у B будет только одна (из группы D)
Будет ли лучше в вашем случае?
EDIT3: учитывая ваш последний комментарий, это больше не действует
Команда GRANT поможет вам разобраться в вашей проблеме.
Вы можете увидеть это прямо здесь: GRANT
Как пример:
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
Вы можете сделать это только для столбца, для всей таблицы или всей базы данных
РЕДАКТИРОВАТЬ: Ну хорошо, позвольте мне проверить группы. Я забыл эту часть.
EDIT2: я ничего не видел в настройке групповых разрешений в MySQL: это говорит, что это невозможно, но оно довольно старое. Но я пришел к этому другому ТАКому вопросу , и они используют PHP для управления группами.