2017-05-30 69 views
0

OS:RHEL Python版本:3.6 SQLAlchemy的版本:1.1.10 PyMySQL版本:0.7.11 MySQL的DISTRIB:5.7.17-13燒瓶SQLAlchemy的PyMySQL - 拒絕訪問錯誤

import pymysql 

conn = pymysql.connect(host='localhost', port=3306, user='testuser', passwd='###########', db='mysql') 

cur = conn.cursor() 

cur.execute("SELECT Host,User FROM user") 

print(cur.description) 

print() 

for row in cur: 
    print(row) 

cur.close() 
conn.close() 

當我嘗試執行上面的代碼,我收到以下錯誤消息,但我仍然可以通過命令行使用相同的帳戶和密碼連接到mysql。

pymysql.err.OperationalError: (1045, "Access denied for user 'testuser'@'127.0.0.1' (using password: YES)") 

我試圖搜索整個互聯網上的這個錯誤消息,但我無法弄清楚實際問題。如果有人能幫我解決這個問題,我將不勝感激。

+0

那麼,你有創建一個名稱和密碼的數據庫用戶? –

+0

@DanielRoseman是的,我有,我可以使用相同的用戶名和密碼從命令行登錄。 – Kaartz

回答

1

我發現問題:MySQL 5.7默認的auth插件是sha256,PyMySQL不支持。將其更改爲mysql_native_password並解決了問題。

+1

我在過去遇到類似的問題,我無法解決這個問題:https://stackoverflow.com/questions/42347191/pymysql-cant-connect-amazon-rds-host-but-same-host-is-accessible - 通過MySQL的?noredirect = 1&LQ = 1。我們在哪裏可以改變這個ine - 「將其更改爲mysql_native_password」 – Viv