drop table if exists test.t1,mysqltest.t1,mysqltest.t2; drop database if exists mysqltest; reset query cache; flush status; show grants for current_user; Grants for root@localhost GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION show grants; Grants for root@localhost GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION 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; show grants for current_user(); Grants for mysqltest_1@localhost GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost' 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 show status like "Qcache_not_cached"; Variable_name Value Qcache_not_cached 0 select "user1"; user1 user1 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 show status like "Qcache_not_cached"; Variable_name Value Qcache_not_cached 1 select * from t1; a b c 1 1 1 2 2 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 1 show status like "Qcache_not_cached"; Variable_name Value Qcache_not_cached 1 select a from t1 ; a 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 2 show status like "Qcache_not_cached"; Variable_name Value Qcache_not_cached 1 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 show grants for current_user(); Grants for @localhost GRANT USAGE ON *.* TO ''@'localhost' 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 2 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 7 select "user4"; user4 user4 show grants; Grants for mysqltest_1@localhost GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost' 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 8 set names binary; 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;