Предоставление разрешений отдельным полям в MySQL

У меня есть база данных MySQL и в ней есть несколько таблиц. Одна из них, конечно же, представляет собой таблицу пользователей для хранения имени пользователя и паролей (в котором также содержится остальная информация). Для всех таблиц в схеме я хочу предоставить пользователям (или группам) разрешение на отдельные поля. Может быть, пример поможет:

Там; таблицу под названием ACCOUNTS. В этой таблице пользователь заполняет (и сохраняет в актуальном состоянии) все данные об их компании (имя, адрес, POC и т.д.). Но я также хочу, чтобы поля, прикрепленные к этой таблице, были прочитаны только для тех пользователей, как LastPaymentDate (они не могут их изменить!). Кроме того, среди этих пользователей разрешения различаются. Например, администратор/суперпользователь может изменить имя и адрес компании, но стандартные пользователи не должны этого делать.

Я думаю, что это, возможно, нужно сделать, сделав несколько представлений для таблицы, по одному для каждого уровня разрешения (группы). Я относительно новичок в MySQL, поэтому я не знаю, является ли это лучшим способом. Я также вижу таблицу поиска, в которой указано, какие поля разрешено просматривать/редактировать.

Моя первоначальная мысль заключалась в том, чтобы включить в комментарии (или имя поля) значение от 0 до 5, а затем у пользователя будет уровень разрешений (0-can't see; 1-Read only; 2 -Read-write; 3- (не используется); 4- (не используется); 5-Изменить/Удалить поле.

Любые предложения? Просмотры? Таблица поиска, чтобы определить, какие поля отображать? Опять же, это не для всей таблицы, для каждого столбца в таблице.

Ответ 1

Вы можете использовать права на отдельные столбцы для пользователя, используя этот код:

GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';

Пример, взятый здесь:

http://dev.mysql.com/doc/refman/5.1/en/grant.html

Также в MySQL нет поддержки групп пользователей или SQL ROLES (которые являются группами привилегий).