**Description**

We've never run any CI jobs for MySQL 8 in our CI system. All the jobs are running at 5.7. With the recent refractor, it is as easy as changing CURRENT_MYSQL_VERSIONS to include the MySQL 8 and change the Dockerfile.ci to use mysql8 client as well (currently Dockerfile.ci uses MySQL 5.7 client).

I think this is a hard pre-requisite for the HA Scheduler PR (#9630) to be merged. HA scheduler will only work in a single-scheduler mode for MySQL 5.7 and without running the whole test suite for MySQL 8 we might be giving the users who would likely try MySQL 8 version of Airflow that does not really work well. 

This has some consequences: our build will run quite a bit longer (we might limit versions of python to test with it but still this is at least 20% longer. So it would be best if we implement #10507 and pre-requisite for it is #11163.
Otherwise, our PRs will be blocking each other and we will slow down our own development.

Note that implementing it might be as easy as adding the version and changing client and it **just work** but since we did not ever run it, it is likely there will be some problems to solve.

**Use case / motivation**

When HA scheduler will get in hands of our users as first Alpha release, we have to be quite sure that it works also for MySQL 8 because  only with MySQL 8 users will be able to test the HA setup for their MySQL installations.

**Related Issues**

#10507 #11163 


tests/providers/mysql/hooks/test_mysql.py
self.connection.port = 3307
        self.db_hook.get_conn()
        assert mock_connect.call_count == 1
        args, kwargs = mock_connect.call_args
        self.assertEqual(args, ())
        self.assertEqual(kwargs['port'], 3307)
    @mock.patch('mysql.connector.connect')
    def test_get_conn_allow_local_infile(self, mock_connect):
        extra_dict = self.connection.extra_dejson
        extra_dict.update(allow_local_infile=True)
        self.connection.extra = json.dumps(extra_dict)
        self.db_hook.get_conn()
        assert mock_connect.call_count == 1
        args, kwargs = mock_connect.call_args
        self.assertEqual(args, ())
        self.assertEqual(kwargs['allow_local_infile'], 1)
class TestMySqlHook(unittest.TestCase):
    def setUp(self):
        super().setUp()
        self.cur = mock.MagicMock()
        self.conn = mock.MagicMock()
        self.conn.cursor.return_value = self.cur
        conn = self.conn
        class SubMySqlHook(MySqlHook):
            conn_name_attr = 'test_conn_id'
            def get_conn(self):