首先,确认数据库配置正确无误:

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.mysql', # or use: mysql.connector.django
  4. 'NAME': 'TestDB',
  5. 'USER': 'Guest',
  6. 'PASSWORD': 'admin',
  7. 'HOST': '192.168.218.199',
  8. 'PORT': '',
  9. }
  10. }

但是启动项目时仍然出现如下错误:

  1. System check identified no issues (0 silenced).
  2. Exception in thread django-main-thread:
  3. Traceback (most recent call last):
  4. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
  5. self.connect()
  6. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\backends\base\base.py", line 195, in connect
  7. self.connection = self.get_new_connection(conn_params)
  8. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\backends\mysql\base.py", line 227, in get_new_connection
  9. return Database.connect(**conn_params)
  10. File "C:\Program Files (x86)\Python\Python37-32\lib\site-packages\MySQLdb\__init__.py", line 84, in Connect
  11. return Connection(*args, **kwargs)
  12. File "C:\Program Files (x86)\Python\Python37-32\lib\site-packages\MySQLdb\connections.py", line 164, in __init__
  13. super(Connection, self).__init__(*args, **kwargs2)
  14. MySQLdb._exceptions.OperationalError: (2059, <NULL>)
  15.  
  16. The above exception was the direct cause of the following exception:
  17.  
  18. Traceback (most recent call last):
  19. File "C:\Program Files (x86)\Python\Python37-32\lib\threading.py", line 917, in _bootstrap_inner
  20. self.run()
  21. File "C:\Program Files (x86)\Python\Python37-32\lib\threading.py", line 865, in run
  22. self._target(*self._args, **self._kwargs)
  23. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
  24. fn(*args, **kwargs)
  25. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\core\management\commands\runserver.py", line 120, in inner_run
  26. self.check_migrations()
  27. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\core\management\base.py", line 453, in check_migrations
  28. executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  29. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\migrations\executor.py", line 18, in __init__
  30. self.loader = MigrationLoader(self.connection)
  31. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\migrations\loader.py", line 49, in __init__
  32. self.build_graph()
  33. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\migrations\loader.py", line 212, in build_graph
  34. self.applied_migrations = recorder.applied_migrations()
  35. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\migrations\recorder.py", line 73, in applied_migrations
  36. if self.has_table():
  37. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\migrations\recorder.py", line 56, in has_table
  38. return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  39. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\backends\base\base.py", line 256, in cursor
  40. return self._cursor()
  41. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\backends\base\base.py", line 233, in _cursor
  42. self.ensure_connection()
  43. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
  44. self.connect()
  45. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\utils.py", line 89, in __exit__
  46. raise dj_exc_value.with_traceback(traceback) from exc_value
  47. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
  48. self.connect()
  49. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\backends\base\base.py", line 195, in connect
  50. self.connection = self.get_new_connection(conn_params)
  51. File "G:\Projects\Python\WebTest\venv\lib\site-packages\django\db\backends\mysql\base.py", line 227, in get_new_connection
  52. return Database.connect(**conn_params)
  53. File "C:\Program Files (x86)\Python\Python37-32\lib\site-packages\MySQLdb\__init__.py", line 84, in Connect
  54. return Connection(*args, **kwargs)
  55. File "C:\Program Files (x86)\Python\Python37-32\lib\site-packages\MySQLdb\connections.py", line 164, in __init__
  56. super(Connection, self).__init__(*args, **kwargs2)
  57. django.db.utils.OperationalError: (2059, <NULL>)

原因:Django 对Mysql 8.0 版本的默认密码加密方式不支持

解决方法:修改密码加密方式。

首先做查询操作看一下plugin:

  1. use mysql;
  2. select user,plugin from user;

结果如下:

Mysql 官方原文:

In MySQL 8.0, caching_sha2_password is the default authentication plugin rather than mysql_native_password.

链接:https://dev.mysql.com/doc/refman/8.0/en/sha256-pluggable-authentication.html

但是Django对caching_sha2_password不支持

所以我们下一步就是对其进行修改:

  1. alter user 'Guest'@'%' identified with mysql_native_password by 'admin';

此时已经修改成功,我们再次查询看一下结果:

重新开启Django项目已经可以正常连接。

Django 连接 Mysql (8.0.16) 失败的更多相关文章

  1. DataGrip 2019.1 连接mysql 8.0.16

    # 下载mysql Connector/J驱动包 https://dev.mysql.com/downloads/connector/j/ 然后解压到一个目录 # 新建mysql 8.0连接驱动 打开 ...

  2. django连接mysql数据库以及建表操作

    django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...

  3. python测试开发django-10.django连接mysql

    前言 Django 对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle.本篇以mysql为例简单介绍django连接mysql进行数据操作 Django连 ...

  4. Python3之Django连接mysql数据库

    一.mysql服务器 系统版本:CentOS6.8 IP :10.0.0.51 版本 1.授权root远程登录 grant all on *.* to 'root'@'%' identifide by ...

  5. Django 连接 MySQL 数据库及常见报错解决

    目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...

  6. [技术博客]django连接mysql数据库的方法及部分问题的解决方法

    配置机器介绍 操作系统:Ubuntu 18.04.2 LTS 64位 python版本:Python 3.6.7 Django版本:Django 2.2 MySql版本:5.7.26 数据库选择 我们 ...

  7. mysql 8.0.16 单主 mgr搭建

    mysql 8.0.16 单主 mgr搭建 环境介绍: 192.168.142.142 db142192.168.142.143 db143192.168.142.145 db145 1.安装依赖包 ...

  8. Django 连接mysql数据库中文乱码

    Django 连接mysql数据库中文乱码 2018年08月25日 20:55:15 可乐乐乐乐乐 阅读数:566   版本:CentOS6.8 python3.6.4 django1.8.2 数据库 ...

  9. Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?'

    Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?' 一.原因 因为Python版本问题,MySQLdb ...

随机推荐

  1. jmh 微基准测试

    选择依据:对某段代码的性能测试. 1.运行方法 mvn clean install java -jar target/benchmarks.jar JMHSample_02 -f 1 2.maven ...

  2. 取消Oracle数据库密码期限 取消用户锁定

    1.首先查用户被锁时间:sql>select username,account_status,lock_date from dba_users where username='SA'; 2.解锁 ...

  3. [运维] 如何访问虚拟机上的 Tomcat ?

    环境: 虚拟机: VMware 15 pro    操作系统  Linux  CentOS 7 64 物理机: Windows 7 事先准备: 1: 下载 Tomcat  的压缩包  apache-t ...

  4. 【协作式原创】查漏补缺之Golang中mutex源码实现

    概览最简单版的mutex(go1.3版本) 预备知识 主要结构体 type Mutex struct { state int32 // 指代mutex锁当前的状态 sema uint32 // 信号量 ...

  5. PTA的Python练习题(九)

    从 第3章-18 输出10个不重复的英文字母 继续 1. a=input() b='' c=a.replace(' ','') for i in c: if i not in b: b=b+i d=l ...

  6. 进程fork

    fork用于父进程创建一个子进程 返回两次 返回-1表示错误 父进程中返回创建子进程的ID,大于0 返回0是表示进入子进程 创建的子进程会继承父进程的属性,比如打开的文件描述符.工作目录.根目录等等. ...

  7. 寒假作业---蓝桥杯---DFS

    题目描述 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: 每个方块代表1~13中的某一个数字,但不能重复. 比如: 6  + 7 = 13 9  - 8 = 1 3  * 4 = 12 10 ...

  8. Java基础 -4.4

    For循环 for循环也是一种常规的使用结构 public static void main(String[] args) { for(定义循环的初始值;循环判断;修改循环条件) { 循环语句的执行; ...

  9. HashMap源码__resize

    final Node<K,V>[] resize() { //创建一个Node数组用于存放table中的元素, Node<K,V>[] oldTab = table; //获取 ...

  10. Array数组的方法总结

    1.检测数组 自从ECMAScript3作出规定后,就出现了确定某个对象是不是数组的经典问题.对于一个网页,或者一个全局作用域而言,使用instanceof操作符就能得到满意结果. if (value ...