DROP TABLE IF EXISTS table_11733 ; grant CREATE, SELECT, DROP on *.* to test@localhost; set global read_only=0; create table table_11733 (a int) engine=InnoDb; BEGIN; insert into table_11733 values(11733); set global read_only=1; select @@global.read_only; @@global.read_only 1 select * from table_11733 ; a 11733 COMMIT; ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement set global read_only=0; drop table table_11733 ; drop user test@localhost; GRANT CREATE, SELECT, DROP ON *.* TO test@localhost; CREATE TABLE t1(a INT) ENGINE=INNODB; INSERT INTO t1 VALUES (0), (1); SET GLOBAL read_only=1; SELECT * FROM t1; a 0 1 BEGIN; SELECT * FROM t1; a 0 1 COMMIT; SET GLOBAL read_only=0; FLUSH TABLES WITH READ LOCK; SELECT * FROM t1; a 0 1 BEGIN; SELECT * FROM t1; a 0 1 COMMIT; UNLOCK TABLES; FLUSH STATUS; # Expected 0 at the beginning of the test show status like 'Opened_tables'; Variable_name Value Opened_tables 0 connection con1; lock table t1 write; connection default; set global read_only=1; # Expected 1 as the slow_log was reopened show status like 'Opened_tables'; Variable_name Value Opened_tables 1 connection con1; unlock tables; connection default; SET GLOBAL read_only=0; # Expected 2 as the slow_log was reopened show status like 'Opened_tables'; Variable_name Value Opened_tables 2 UNLOCK TABLES; DROP TABLE t1; DROP USER test@localhost; echo End of 5.1 tests