drop table if exists test.t1,mysqltest.t1,mysqltest.t2; reset query cache; flush status; create database if not exists mysqltest; create table mysqltest.t1 (a int,b int,c int); create table mysqltest.t2 (a int,b int,c int); insert into mysqltest.t1 values (1,1,1),(2,2,2); insert into mysqltest.t2 values (3,3,3); create table test.t1 (a char (10)); insert into test.t1 values ("test.t1"); select * from t1; a test.t1 select * from t1; a b c 1 1 1 2 2 2 select a from t1; a 1 2 select c from t1; c 1 2 select * from t2; a b c 3 3 3 select * from mysqltest.t1,test.t1; a b c a 1 1 1 test.t1 2 2 2 test.t1 show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 6 show status like "Qcache_hits%"; Variable_name Value Qcache_hits 0 grant SELECT on mysqltest.* to mysqltest_1@localhost; grant SELECT on mysqltest.t1 to mysqltest_2@localhost; grant SELECT on test.t1 to mysqltest_2@localhost; grant SELECT(a) on mysqltest.t1 to mysqltest_3@localhost; select "user1"; user1 user1 select * from t1; a b c 1 1 1 2 2 2 select a from t1 ; a 1 2 select c from t1; c 1 2 show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 6 show status like "Qcache_hits"; Variable_name Value Qcache_hits 3 show status like "Qcache_not_cached"; Variable_name Value Qcache_not_cached 1 select "user2"; user2 user2 select * from t1; a b c 1 1 1 2 2 2 select a from t1; a 1 2 select c from t1; c 1 2 select * from mysqltest.t1,test.t1; a b c a 1 1 1 test.t1 2 2 2 test.t1 select * from t2; ERROR 42000: select command denied to user: 'mysqltest_2@localhost' for table 't2' show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 6 show status like "Qcache_hits"; Variable_name Value Qcache_hits 7 show status like "Qcache_not_cached"; Variable_name Value Qcache_not_cached 3 select "user3"; user3 user3 select * from t1; ERROR 42000: select command denied to user: 'mysqltest_3@localhost' for column 'b' in table 't1' select a from t1; a 1 2 select c from t1; ERROR 42000: SELECT command denied to user: 'mysqltest_3@localhost' for column 'c' in table 't1' select * from t2; ERROR 42000: select command denied to user: 'mysqltest_3@localhost' for table 't2' select mysqltest.t1.c from test.t1,mysqltest.t1; ERROR 42000: SELECT command denied to user: 'mysqltest_3@localhost' for column 'c' in table 't1' show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 6 show status like "Qcache_hits"; Variable_name Value Qcache_hits 7 show status like "Qcache_not_cached"; Variable_name Value Qcache_not_cached 8 select "user4"; user4 user4 select a from t1; ERROR 3D000: No Database Selected select * from mysqltest.t1,test.t1; a b c a 1 1 1 test.t1 2 2 2 test.t1 select a from mysqltest.t1; a 1 2 select a from mysqltest.t1; a 1 2 show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 8 show status like "Qcache_hits"; Variable_name Value Qcache_hits 8 show status like "Qcache_not_cached"; Variable_name Value Qcache_not_cached 9 delete from mysql.user where user in ("mysqltest_1","mysqltest_2","mysqltest_3"); delete from mysql.db where user in ("mysqltest_1","mysqltest_2","mysqltest_3"); delete from mysql.tables_priv where user in ("mysqltest_1","mysqltest_2","mysqltest_3"); delete from mysql.columns_priv where user in ("mysqltest_1","mysqltest_2","mysqltest_3"); flush privileges; drop table test.t1,mysqltest.t1,mysqltest.t2; drop database mysqltest;