Ответ 1
Запустите их как два отдельных оператора GRANT
:
GRANT SELECT ON testdb.fruits TO [email protected] IDENTIFIED BY 'pass';
GRANT SELECT ON testdb.sports TO [email protected] IDENTIFIED BY 'pass';
Синтаксис MySQL GRANT разрешает только один объект в позиции priv_level
: хотя он может использовать *
в качестве подстановочного знака:
GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_specification [, user_specification] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH with_option ...]
object_type:
TABLE
| FUNCTION
| PROCEDURE
priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
Часть ниже не работает на MySQL 5.5. Как "вычесть" привилегии в MySQL объясняет почему.
Чтобы предоставить SELECT
на всех таблицах, затем выборочно отменить, вы можете сделать:
GRANT SELECT ON testdb.* TO [email protected] IDENTIFIED BY 'pass';
REVOKE ALL PRIVILEGES ON testdb.tblname FROM [email protected];
Это, кажется, нечетный метод, хотя, и я думаю, что я буду отдельно GRANT, а не отдельно REVOKE. Забастовкa >