drop table if exists t1; drop view if exists v1; create database db1; 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; GRANT UPDATE(f1) ON t1 TO 'mysqltest_1'@'localhost'; GRANT SELECT ON `test`.* TO 'mysqltest_1'@'localhost'; GRANT ALL ON db1.* TO 'mysqltest_1'@'localhost'; create SQL SECURITY INVOKER view db1.v1 as select * from test.t1; connect (user1,localhost,mysqltest_1,,test); connection user1; show grants; --error 1143 update test.t1 set f2 = 3; select * from t1; connection user1; update db1.v1 set f2 = 4; select * from t1;