Да, в MySQL возможно ограничить доступ пользователя к определённым колонкам в таблице, но нужно понимать, как правильно настраивать права доступа.
Ваша команда `GRANT` предоставляет пользователю `test` права на выборку из таблицы `admin.users`, однако команда `REVOKE` не будет работать так, как вы это ожидаете. В MySQL нельзя управлять правами доступа на уровне колонок через команды `GRANT` и `REVOKE` в том виде, в котором вы это делаете.
Для предоставления доступа к определенным колонкам вам нужно использовать `GRANT` следующим образом:
1. Сначала предоставьте доступ к таблице без указания колонок (это необходимо).
2. Затем откажите доступ к определённым колонкам с помощью параметра `REVOKE`.
Однако в MySQL может быть немного сложнее, так как нет встроенной поддержки для ограничения доступа к колонкам. Некоторые администраторы решают эту проблему, создав представления (views), в которых исключены чувствительные данные. Тогда пользователю можно предоставить доступ только к этому представлению.
Вот пример подхода с использованием представления:
1. Создайте представление, которое включает только те колонки, доступ к которым вы хотите предоставить:
```sql
CREATE VIEW admin.users_view AS
SELECT id, name FROM admin.users;
```
2. Затем предоставьте доступ пользователю к этому представлению:
```sql
GRANT SELECT ON admin.users_view TO 'test'@'localhost';
```
Теперь пользователь `test` сможет выполнять SELECT-запросы только к колонкам `id` и `name` в представлении `admin.users_view`, и не будет иметь доступа к другим колонкам в таблице `admin.users`.
Таким образом, если вам необходимо ограничить доступ к определённым колонкам, рекомендуется использовать представления в качестве решения.