diff --git a/django/db/backends/mysql/introspection.py b/django/db/backends/mysql/introspection.py
index 041fbee..ac93d68 100644
--- a/django/db/backends/mysql/introspection.py
+++ b/django/db/backends/mysql/introspection.py
@@ -32,7 +32,7 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
 
     def get_table_list(self, cursor):
         "Returns a list of table names in the current database."
-        cursor.execute("SHOW TABLES")
+        cursor.execute("SHOW FULL TABLES WHERE TABLE_TYPE = 'BASE TABLE'")
         return [row[0] for row in cursor.fetchall()]
 
     def get_table_description(self, cursor, table_name):
diff --git a/tests/regressiontests/backends/tests.py b/tests/regressiontests/backends/tests.py
index dc92189..a695430 100644
--- a/tests/regressiontests/backends/tests.py
+++ b/tests/regressiontests/backends/tests.py
@@ -110,6 +110,19 @@ class MySQLTests(TestCase):
         connection.mysql_version
         self.assertTrue(connection.connection is None)
 
+    @unittest.skipUnless(connection.vendor == 'mysql',
+                        "Test valid only for MySQL")
+    def test_inspect_tables_view(self):
+        """
+        Check if a view is not returned as a table
+        Refs #18782
+        """
+        cursor = connection.cursor()
+        cursor.execute('create view my_view as select 1 f')
+        tables = connection.introspection.get_table_list(cursor)
+        self.assertFalse('my_view' in tables)
+        cursor.close()
+
 class DateQuotingTest(TestCase):
 
     def test_django_date_trunc(self):
