[英]Python MySQL connecting to database error
我正在嘗試使用Python和MySQL創建一個小型應用程序。 我設法使用MySQL連接來連接Python和MySQL。 但是現在當我嘗試運行此腳本以實際連接到數據庫時:
import mysql.connector
mydb = mysql.connector.connect(
passwd="12345",
db="DB",
host="hostname",
user="root"
)
print(mydb)
我收到很多錯誤,例如:
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\network.py", line 485, in open_connection
socket.SOL_TCP)
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 748, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed
File "c:/Users/Krystian/Desktop/DB/db.py", line 7, in <module>
user="root"
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\__init__.py", line 179, in connect
return MySQLConnection(*args, **kwargs)
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\connection.py", line 94, in __init__
self.connect(**kwargs)
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\abstracts.py", line 722, in connect
self._open_connection()
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\connection.py", line 207, in _open_connection
self._socket.open_connection()
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\network.py", line 501, in open_connection
errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'hostname:3306' (11001 getaddrinfo failed)
我嘗試了其他與數據庫連接的方法,但是它們沒有用,我不確定現在該怎么辦。
在此先感謝您的幫助!
編輯1
正如Juergen所述,在修復了主機名之后,上面的大多數錯誤都消失了,但是出現了新的錯誤:
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\connection.py", line 94, in __init__
self.connect(**kwargs)
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\abstracts.py", line 722, in connect
self._open_connection()
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\connection.py", line 211, in _open_connection
self._ssl)
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\connection.py", line 141, in _do_auth
auth_plugin=self._auth_plugin)
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\protocol.py", line 102, in make_auth
auth_data, ssl_enabled)
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\protocol.py", line 58, in _auth_response
auth = get_auth_plugin(auth_plugin)(
File "C:\Users\Krystian\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\authentication.py", line 191, in get_auth_plugin
"Authentication plugin '{0}' is not supported".format(plugin_name))
mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supporte
我猜您的計算機(數據庫在其中運行)未命名為“主機名”:
host="hostname",
如果是本地計算機,請嘗試localhost
。 “主機名”只是示例代碼中的占位符。 您始終必須替換此類。
關於您的修改:
看起來您的數據庫服務器配置錯誤。 也許您需要在錯誤消息中命名的插件。
嘗試這個 :
mysql.connector.connect(
host="localhost",
user="user_name",
passwd="db_password",
database="db_name")
好的,如上面的用戶所述,已經更正了主機名,並返回到舊版安全性以及創建新數據庫的問題得以解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.