drop table if exists t1; drop view if exists v1; create table t1 (f1 int, f2 int); insert into t1 values(1,1), (2,2); delete from mysql.db where db like 'test%'; flush privileges; create SQL SECURITY INVOKER view v1 as select * from t1; GRANT UPDATE(f1) ON t1 TO 'mysqltest_1'@'localhost'; GRANT SELECT ON `test`.* TO 'mysqltest_1'@'localhost'; GRANT UPDATE ON table v1 TO 'mysqltest_1'@'localhost'; connect (user1,localhost,mysqltest_1,,test); connection user1; show grants; --error 1143 update t1 set f2 = 3; select * from t1; connection user1; update v1 set f2 = 4; select * from t1;