title: django.db.utils.operationalError: (2059,"Authentication Plugin 'caching_sha2_password'")
body: <p>I am trying to connect my django project 'mysite' to mysql. I made a user in mysql and granted it all privileges to access the project. These are the changes I made to settings.py :</p>
  
  <pre><code>    DATABASES = {
      'default': {
      'ENGINE': 'django.db.backends.mysql',
      'NAME': 'mysitedb',
      'USER': 'username',
      'PASSWORD': 'password',
      'HOST': 'localhost',
      'PORT': '',
  }
  }
  </code></pre>
  
  <p>Now when I try to migrate the database using <code>python3 manage.py makemigrations</code>, I get the following error:</p>
  
  <pre><code>django.db.utils.OperationalError: (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory")&lt;/code&gt;&lt;/pre&gt;
  </code></pre>
  
  <p>The complete stack trace is as follows:</p>
  
  <pre><code>Traceback (most recent call last):
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
  self.connect()
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 194, in connect
  self.connection = self.get_new_connection(conn_params)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 236, in get_new_connection
  return Database.connect(**conn_params)
  File "/usr/lib/python3/dist-packages/MySQLdb/__init__.py", line 81, in Connect
  return Connection(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 204, in __init__
  super(Connection, self).__init__(*args, **kwargs2)
  _mysql_exceptions.OperationalError: (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory")
  
  The above exception was the direct cause of the following exception:
  
  Traceback (most recent call last):
  File "manage.py", line 15, in &lt;module&gt;
  execute_from_command_line(sys.argv)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
  utility.execute()
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/core/management/__init__.py", line 365, in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/core/management/base.py", line 288, in run_from_argv
  self.execute(*args, **cmd_options)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/core/management/base.py", line 332, in execute
  self.check()
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/core/management/base.py", line 364, in check
  include_deployment_checks=include_deployment_checks,
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/core/management/base.py", line 351, in _run_checks
  return checks.run_checks(**kwargs)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/core/checks/registry.py", line 73, in run_checks
  new_errors = check(app_configs=app_configs)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/core/checks/model_checks.py", line 27, in check_all_models
  errors.extend(model.check(**kwargs))
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/models/base.py", line 1200, in check
  errors.extend(cls._check_fields(**kwargs))
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/models/base.py", line 1272, in _check_fields
  errors.extend(field.check(**kwargs))
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 894, in check
  errors = super().check(**kwargs)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 206, in check
  errors.extend(self._check_backend_specific_checks(**kwargs))
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 303, in _check_backend_specific_checks
  return connections[db].validation.check_field(self, **kwargs)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/base/validation.py", line 21, in check_field
  field_type = field.db_type(self.connection)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 648, in db_type
  return connection.data_types[self.get_internal_type()] % data
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/utils/functional.py", line 36, in __get__
  res = instance.__dict__[self.name] = self.func(instance)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 133, in data_types
  if self.features.supports_microsecond_precision:
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/utils/functional.py", line 36, in __get__
  res = instance.__dict__[self.name] = self.func(instance)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/mysql/features.py", line 65, in supports_microsecond_precision
  return self.connection.mysql_version &gt;= (5, 6, 4)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/utils/functional.py", line 36, in __get__
  res = instance.__dict__[self.name] = self.func(instance)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 345, in mysql_version
  with self.temporary_connection() as cursor:
  File "/usr/lib/python3.5/contextlib.py", line 59, in __enter__
  return next(self.gen)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 576, in temporary_connection
  cursor = self.cursor()
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 255, in cursor
  return self._cursor()
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 232, in _cursor
  self.ensure_connection()
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
  self.connect()
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/utils.py", line 89, in __exit__
  raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
  self.connect()
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 194, in connect
  self.connection = self.get_new_connection(conn_params)
  File "/home/prabhjeet/.local/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 236, in get_new_connection
  return Database.connect(**conn_params)
  File "/usr/lib/python3/dist-packages/MySQLdb/__init__.py", line 81, in Connect
  return Connection(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 204, in __init__
  super(Connection, self).__init__(*args, **kwargs2)
  django.db.utils.OperationalError: (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory")
  </code></pre>
  
  <p></p>
  
  <p>How can I resolve this error? I am using python 3 on ubuntu 16.04 platform.</p>