鍍金池/ 問答/Python  數(shù)據(jù)庫/ django連接mysql,顯示Can't connect to MySQL s

django連接mysql,顯示Can't connect to MySQL server on 'localhost'

問題描述

python mysql 全部安裝成功,框架用的是django,連接mysql的時(shí)候一直顯示
clipboard.png
這種錯(cuò)誤;
現(xiàn)在mysql正常運(yùn)行,如果我把django中數(shù)據(jù)庫部分的代碼刪除的話,程序能正常運(yùn)行,在瀏覽器中訪問127.0.0.1:8080

題目來源及自己的思路

我查了相關(guān)的資料,顯示的都是數(shù)據(jù)庫沒有開啟所以連接不上,但是我這塊是一直開啟的,我理解的應(yīng)該就是數(shù)據(jù)庫連接錯(cuò)誤了,但是我配置的mysql的主機(jī)和端口寫的都是對的。

相關(guān)代碼

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

請問有大神知道這是怎么回事嗎?怎么解決呢?

回答
編輯回答
久舊酒

好像遇到過這個(gè)問題,你配置'HOST': '127.0.0.1'時(shí)候django會(huì)通過localhost訪問數(shù)據(jù)庫而不是ip地址127.0.0.1。
但是你的數(shù)據(jù)庫沒有配置root用戶通過localhost域名訪問的權(quán)限

mysql> use mysql; 
mysql> update user set host = 'localhost' where user = 'root';   -- 允許通過localhost域名訪問
mysql> update user set host = '%' where user = 'root';   -- 允許通過任意域名訪問,和上一條任選一個(gè)
mysql> select host, user from user; 
mysql> flush privileges;

或者

2017年3月23日 18:15
編輯回答
殘淚

如果是本機(jī)既做服務(wù)端又做客戶端的話,這種情況大概率是服務(wù)端沒有開啟,可以檢測一下。在本機(jī)上,也可以直接運(yùn)行mysql界面看具體的情況

2017年7月13日 21:31
編輯回答
懷中人

數(shù)據(jù)庫的ip地址沒寫啊,'HOST': ''改成'HOST': '127.0.0.1';如果還不行的話,應(yīng)該是你本機(jī)的MySQL服務(wù)沒啟動(dòng),可以在終端'telnet 127.0.0.1 3306'測一下通不通。歡迎采納~

2018年2月10日 21:34