簡體   English   中英

Python MySQLdb - 錯誤1045:拒絕用戶訪問

[英]Python MySQLdb - Error 1045: Access denied for user

我有一個類似的python代碼

import MySQLdb
import sys

try:
    con = MySQLdb.connect(host = 'localhost',user = 'crawler',passwd = 'crawler', db = 'real_estate_analytics')

    #... rest of code ...

except MySQLdb.Error, e:

    print "Error %d: %s" % (e.args[0],e.args[1])
    sys.exit(1)

問題是我收到以下錯誤:

Error 1045: Access denied for user 'crawler'@'localhost' (using password: YES)

如果我在終端mysql -u crawler -pcrawler上的mysql -u crawler -pcrawler我可以訪問數據庫沒有問題。

mysql> show databases;
+-----------------------+
| Database              |
+-----------------------+
| information_schema    |
| AL                    |
| cloversoup            |
| codebar               |
| mysql                 |
| performance_schema    |
| real_estate_analytics |
| teste                 |
+-----------------------+
8 rows in set (0.00 sec)

我還刪除了匿名用戶以避免沖突。 我的用戶是

mysql> select user,host from mysql.user;
+---------+-----------+
| user    | host      |
+---------+-----------+
| root    | %         |
| crawler | localhost |
| root    | localhost |
+---------+-----------+
3 rows in set (0.00 sec)

我已經給予爬蟲(和刷新的權限)所有授權,所以這不應該是問題:

GRANT ALL PRIVILEGES ON *.* TO crawler@localhost IDENTIFIED BY 'crawler' WITH GRANT OPTION;

FLUSH PRIVILEGES;

事實上:

mysql> show grants;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for crawler@localhost                                                                                                              |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'crawler'@'localhost' IDENTIFIED BY PASSWORD '*A594DECC46D378FDA13D7843740CBF4985E6969B' WITH GRANT OPTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

我還嘗試使用root用戶進行連接

con = MySQLdb.connect(host = 'localhost',user = 'root',passwd = 'my_root_password', db = 'real_estate_analytics')

但它也不起作用(相同的錯誤)。

這件事讓我抓狂。 有沒有人能夠了解問題所在?

OBS:我知道在SO上有類似的問題,但是我已經全部閱讀了它們並沒有解決我的問題。 這就是我在這里發布的原因

'localhost' 對MySQL來說一直很特別 在您的情況下,您授予crawler @ localhost一些權限,這將意味着“通過UNIX套接字連接的用戶爬網程序”。 而且,我很確定MySQL服務器配置了--skip-networking

這可以通過明確來解決。 使用數據庫驅動程序的unix_socket連接參數 ,它將強制使用UNIX套接字。 (無恥地鏈接到MySQL Connector / Python文檔,因為我是該驅動程序的維護者)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM