diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result
index 103b3c9a289cac3a9c3af997e47b31763cd07724..d1eb213670e8680289a206683d494dbec6342023 100644
--- a/mysql-test/r/show_check.result
+++ b/mysql-test/r/show_check.result
@@ -662,53 +662,44 @@ t1	NULL	NULL	NULL	NULL	#	#	#	#	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Incorrect
 show create table t1;
 ERROR HY000: Incorrect information in file: './test/t1.frm'
 drop table if exists t1;
-CREATE TABLE txt1(a int);
-CREATE TABLE tyt2(a int);
-CREATE TABLE urkunde(a int);
+
+# Bug#12183: SHOW OPEN TABLES behavior doesn't match grammar.
+
+DROP DATABASE IF EXISTS mysqltest1;
+CREATE DATABASE mysqltest1;
+use mysqltest1;
+
+CREATE TABLE t1(a INT);
+CREATE TABLE t2(a INT);
+
 FLUSH TABLES;
-SELECT 1 FROM mysql.db, mysql.proc, mysql.user, mysql.time_zone, mysql.time_zone_name, txt1, tyt2, urkunde LIMIT 0;
+
+SELECT 1 FROM t1;
 1
-SHOW OPEN TABLES;
-Database	Table	In_use	Name_locked
-mysql	db	0	0
-test	urkunde	0	0
-mysql	time_zone	0	0
-mysql	general_log	0	0
-test	txt1	0	0
-mysql	proc	0	0
-test	tyt2	0	0
-mysql	user	0	0
-mysql	time_zone_name	0	0
-SHOW OPEN TABLES FROM mysql;
+SELECT 1 FROM t2;
+1
+
+SHOW OPEN TABLES FROM mysqltest1;
 Database	Table	In_use	Name_locked
-mysql	db	0	0
-mysql	time_zone	0	0
-mysql	general_log	0	0
-mysql	proc	0	0
-mysql	user	0	0
-mysql	time_zone_name	0	0
-SHOW OPEN TABLES FROM mysql LIKE 'u%';
+mysqltest1	t1	0	0
+mysqltest1	t2	0	0
+
+SHOW OPEN TABLES FROM mysqltest1 LIKE 'z%';
 Database	Table	In_use	Name_locked
-mysql	user	0	0
-SHOW OPEN TABLES LIKE 't%';
+
+SHOW OPEN TABLES FROM mysqltest1 LIKE 't1%';
 Database	Table	In_use	Name_locked
-mysql	time_zone	0	0
-test	txt1	0	0
-test	tyt2	0	0
-mysql	time_zone_name	0	0
-SHOW OPEN TABLES LIKE '%o%';
+mysqltest1	t1	0	0
+
+SHOW OPEN TABLES FROM mysqltest1 LIKE '%1%';
 Database	Table	In_use	Name_locked
-mysql	time_zone	0	0
-mysql	general_log	0	0
-mysql	proc	0	0
-mysql	time_zone_name	0	0
+mysqltest1	t1	0	0
+
 FLUSH TABLES;
-SHOW OPEN TABLES;
-Database	Table	In_use	Name_locked
-mysql	general_log	0	0
-DROP TABLE txt1;
-DROP TABLE tyt2;
-DROP TABLE urkunde;
+
+DROP DATABASE mysqltest1;
+use test;
+
 SHOW TABLES FROM non_existing_database;
 ERROR 42000: Unknown database 'non_existing_database'
 End of 4.1 tests
diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test
index 613e9acc4c44724e4d2c2ad71f7b4689f96c0e75..9d32b50fd74c5eee4baf8be54c8726c371c4244e 100644
--- a/mysql-test/t/show_check.test
+++ b/mysql-test/t/show_check.test
@@ -435,28 +435,66 @@ drop table if exists t1;
 # BUG 12183 -  SHOW OPEN TABLES behavior doesn't match grammar
 # First we close all open tables with FLUSH tables and then we open some.
 #
-CREATE TABLE txt1(a int);
-CREATE TABLE tyt2(a int);
-CREATE TABLE urkunde(a int);
 
-# make the output deterministic:
-# the order used in SHOW OPEN TABLES
-# is too much implementation dependent
+--echo
+--echo # Bug#12183: SHOW OPEN TABLES behavior doesn't match grammar.
+--echo
+
+# NOTE: SHOW OPEN TABLES does not sort result list by database or table names.
+# Tables are listed in the order they were opened. We can not use the system
+# database (mysql) for the test here, because we have no control over the order
+# of opening tables in it. Consequently, we can not use 'SHOW OPEN TABLES'.
+
+--disable_warnings
+DROP DATABASE IF EXISTS mysqltest1;
+--enable_warnings
+
+CREATE DATABASE mysqltest1;
+use mysqltest1;
+
+--echo
+
+CREATE TABLE t1(a INT);
+CREATE TABLE t2(a INT);
+
+--echo
+
 --disable_ps_protocol
 FLUSH TABLES;
-SELECT 1 FROM mysql.db, mysql.proc, mysql.user, mysql.time_zone, mysql.time_zone_name, txt1, tyt2, urkunde LIMIT 0;
-SHOW OPEN TABLES;
-SHOW OPEN TABLES FROM mysql;
-SHOW OPEN TABLES FROM mysql LIKE 'u%';
-SHOW OPEN TABLES LIKE 't%';
-SHOW OPEN TABLES LIKE '%o%';
+
+--echo
+
+SELECT 1 FROM t1;
+SELECT 1 FROM t2;
+
+--echo
+
+SHOW OPEN TABLES FROM mysqltest1;
+
+--echo
+
+SHOW OPEN TABLES FROM mysqltest1 LIKE 'z%';
+
+--echo
+
+SHOW OPEN TABLES FROM mysqltest1 LIKE 't1%';
+
+--echo
+
+SHOW OPEN TABLES FROM mysqltest1 LIKE '%1%';
+
+--echo
+
 FLUSH TABLES;
-SHOW OPEN TABLES;
 --enable_ps_protocol
 
-DROP TABLE txt1;
-DROP TABLE tyt2;
-DROP TABLE urkunde;
+--echo
+
+DROP DATABASE mysqltest1;
+use test;
+
+--echo
+
 #
 # BUG #12591 (SHOW TABLES FROM dbname produces wrong error message)
 #