Как установить привилегии уровня таблицы в MySQL - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь отозвать право выбора из определенной таблицы в БД MySQL.Ограничение уровня базы данных работает, а уровень таблицы - нет.

Когда я пишу "show grants", я получаю следующее:

| GRANT USAGE ON *.* TO 'rachit'@'localhost' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
| GRANT ALL PRIVILEGES ON `test123`.* TO 'rachit'@'localhost'                                                   |
| GRANT INSERT, UPDATE, DELETE ON `test123`.`names123` TO 'rachit'@'localhost' 

Как вы можете видеть выше, я хочу

отозвать право выбора у пользователя rachit для таблицы 'names123' базы данных 'test123', но SELECT работает.

Я приложил скриншот ниже для лучшего понимания.https://ibb.co/GRtjXX7

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Обсуждение:

Если это не было конкретно GRANTed, это не может быть REVOKEd.Это неприятный побочный эффект не очень удобного для пользователя синтаксиса и реализации предоставления / отзыва.

Вы можете использовать SELECT против information_schema.TABLES для автоматизации обнаружения всех других таблиц.И пусть SELECT создаст нужный GRANTs.

Возможный обходной путь:

Другой подход к вашей конкретной проблеме - переместить эту таблицу в другую базу данных ,Тогда GRANT различные разрешения для этой базы данных.

0 голосов
/ 13 февраля 2019

Если вы GRANT ALL ON test123.* TO 'rachit'@'localhost', вы не можете удалить одну таблицу, запустив REVOKE ALL ON test123.* TO 'rachit'@'localhost'.

для некоторых систем СУБД, в частности DENY опция для конкретного отказа в доступе к конкретной таблице, но это не относится к mysql.

вы можете написать скрипт и дать доступ к каждой таблице один за другим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...