django连接mysql,显示Can't connect to MySQL server on 'localhost'

问题描述

python mysql 全部安装成功,框架用的是django,连接mysql的时候一直显示
clipboard.png
这种错误;
现在mysql正常运行,如果我把django中数据库部分的代码删除的话,程序能正常运行,在浏览器中访问127.0.0.1:8080

题目来源及自己的思路

我查了相关的资料,显示的都是数据库没有开启所以连接不上,但是我这块是一直开启的,我理解的应该就是数据库连接错误了,但是我配置的mysql的主机和端口写的都是对的。

相关代码

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': '127.0.0.1',
        'PORT': '3307',
    },
}

请问有大神知道这是怎么回事吗?怎么解决呢?

阅读 8.8k
3 个回答

如果是本机既做服务端又做客户端的话,这种情况大概率是服务端没有开启,可以检测一下。在本机上,也可以直接运行mysql界面看具体的情况

数据库的ip地址没写啊,'HOST': ''改成'HOST': '127.0.0.1';如果还不行的话,应该是你本机的MySQL服务没启动,可以在终端'telnet 127.0.0.1 3306'测一下通不通。欢迎采纳~

好像遇到过这个问题,你配置'HOST': '127.0.0.1'时候django会通过localhost访问数据库而不是ip地址127.0.0.1。
但是你的数据库没有配置root用户通过localhost域名访问的权限

mysql> use mysql; 
mysql> update user set host = 'localhost' where user = 'root';   -- 允许通过localhost域名访问
mysql> update user set host = '%' where user = 'root';   -- 允许通过任意域名访问,和上一条任选一个
mysql> select host, user from user; 
mysql> flush privileges;

或者

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题