Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Возможно ли ограничить INSERT,UPDATE и DELETE к одной таблице для все пользователей?  [new]
alexnews
Member

Откуда: От верблюда
Сообщений: 163
Уважаемые Спецы!
Возникла необходимость временно ограничить INSERT,UPDATE, DELETE только к одной таблице в базе данных для всех сразу пользователей.
Рассматривались варианты:
1. LOCK TABLE - но не работает так как не реально отследить все запросы
2. TRIGGER on UPDATE,DELETE,INSERT - в данный момент рабочий вариант рассматривается
но хотелось бы узнать есть ли другие возможности?

Заранее спасибо
14 фев 20, 17:38    [22080251]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли ограничить INSERT,UPDATE и DELETE к одной таблице для все пользователей?  [new]
miksoft
Member

Откуда:
Сообщений: 38004
Еще можно таблицу переименовать. Если при этом она нужна для чтения , то сделать замещающее вью.
14 фев 20, 19:35    [22080342]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли ограничить INSERT,UPDATE и DELETE к одной таблице для все пользователей?  [new]
alexnews
Member

Откуда: От верблюда
Сообщений: 163
miksoft,

спасибо, хороший третий вариант! я как то совсем забыл про вьюз.
14 фев 20, 20:07    [22080355]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли ограничить INSERT,UPDATE и DELETE к одной таблице для все пользователей?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20026
alexnews
Возникла необходимость временно ограничить INSERT,UPDATE, DELETE только к одной таблице в базе данных для всех сразу пользователей.
Штатным способом выполнить указанное действие является выполнение соотв. REVOKE, а когда надобность отпадёт - комплементарного GRANT.

Переименование для такой задачи - это из пушки по воробьям. А представление - скорее всего изрядно просадит производительность, особенно если таблица пухлая.
14 фев 20, 21:45    [22080379]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли ограничить INSERT,UPDATE и DELETE к одной таблице для все пользователей?  [new]
miksoft
Member

Откуда:
Сообщений: 38004
Akina
Штатным способом выполнить указанное действие является выполнение соотв. REVOKE
А если право на таблицу давалось не непосредственно, а в составе более объемлющего гранта, например, на базу или вообще *.*, то REVOKE на отдельную таблицу сработает?
Насколько я вижу по доке, это относительно недавно стало работать:
https://dev.mysql.com/doc/refman/8.0/en/grant.html
As of MySQL 8.0.16, it is possible to explicitly deny a privilege granted at the global level by revoking it for particular databases, if the partial_revokes system variable is enabled:

GRANT SELECT, INSERT, UPDATE ON *.* TO u1;
REVOKE INSERT, UPDATE ON db1.* FROM u1;
The result of the preceding statements is that SELECT applies globally to all tables, whereas INSERT and UPDATE apply globally except to tables in db1. Account access to db1 is read only.
+ см. https://dev.mysql.com/doc/refman/8.0/en/partial-revokes.html


Akina
А представление - скорее всего изрядно просадит производительность, особенно если таблица пухлая.
Только если оно материализуется. Но представление вида SELECT * FROM mytable не должно материализоваться.
15 фев 20, 02:26    [22080430]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли ограничить INSERT,UPDATE и DELETE к одной таблице для все пользователей?  [new]
alexnews
Member

Откуда: От верблюда
Сообщений: 163
miksoft
Akina
Штатным способом выполнить указанное действие является выполнение соотв. REVOKE
А если право на таблицу давалось не непосредственно, а в составе более объемлющего гранта, например, на базу или вообще *.*, то REVOKE на отдельную таблицу сработает?
[/quot]
Не работает, по крайней мере на 5.6 решили проблему триггерами которые пытаются вставлять 1 в не существующую таблицу перед UPDATE/DELETE/INSERT вроде работает теперь проблема понять откуда идет запрос на вставление новой записи но это уже другая история. СПАСИБО !!!
18 фев 20, 18:52    [22082470]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли ограничить INSERT,UPDATE и DELETE к одной таблице для все пользователей?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20026
alexnews
решили проблему триггерами которые пытаются вставлять 1 в не существующую таблицу
А просто SIGNAL не проще было?
18 фев 20, 19:30    [22082502]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли ограничить INSERT,UPDATE и DELETE к одной таблице для все пользователей?  [new]
alexnews
Member

Откуда: От верблюда
Сообщений: 163
Akina
alexnews
решили проблему триггерами которые пытаются вставлять 1 в не существующую таблицу
А просто SIGNAL не проще было?

Спасибо, как то забыл про SIGNAL

Сообщение было отредактировано: 19 фев 20, 12:41
18 фев 20, 22:48    [22082619]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить