[英]Connection Error while connecting the mysql database through python
我正在嘗試使用下面提到的 python 代碼連接 Mysql 服務器
import mysql.connector
mydb = mysql.connector.connect(
host = "127.0.0.1",
port = 5000,
user = "user id",
password = "password"
)
print(mydb)
但是在運行此代碼以測試我是否已連接到 MySQL 時,我遇到了我無法理解的錯誤。
Traceback (most recent call last):
File "C:\Users\varul.jain\Desktop\Test Phase\Mysql\mydb_test.py", line 7, in <module>
password = "root"
File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\__init__.py", line 179, in connect
return MySQLConnection(*args, **kwargs)
File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\connection.py", line 95, in __init__
self.connect(**kwargs)
File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\abstracts.py", line 716, in connect
self._open_connection()
File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\connection.py", line 210, in _open_connection
self._ssl)
File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\connection.py", line 142, in _do_auth
auth_plugin=self._auth_plugin)
File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\protocol.py", line 102, in make_auth
auth_data, ssl_enabled)
File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\protocol.py", line 58, in _auth_response
auth = get_auth_plugin(auth_plugin)(
File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\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 supported
注意:我已將默認值初始化為 5000
出於測試目的,我已經初始化了端口 5000,用戶 - root 和密碼 - root
但是根據上述錯誤授權默認密碼不可用
有什么方法可以檢查用戶 ID 和密碼以在 python 代碼中進行交叉驗證和更新嗎?
建議會有所幫助
按着這些次序:
從此安裝 MySQL 服務器。
mysql-connector-python
(在你的 python 環境中)使用此代碼:
導入 mysql.connector
mydb = mysql.connector.connect(host="127.0.0.1", port="3306", user="root", password="root", auth_plugin="mysql_native_password")
打印(mydb)
根據 python 庫的 SQL 文檔。你需要指定 auth 插件如下:-
conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1',port=5000, database='test', auth_plugin='mysql_native_password')
print(conn)
我在使用 webmin + python3 的 centOS VPS 上遇到了類似的問題。
起初我認為可能是由於 connection package ,所以我嘗試了:
'python3 -m pip install mysql-connector' ,在 python 中它將使用 'import mysql.connector'
'pip3 install PyMySQL' ,在python中使用'import PyMySQL'
兩者都不能解決問題。 然后我從一個網站上找到了其他幾種連接方法(現在我不記得它的地址了),詳細解釋了每種方法的優點和缺點,根據它,我最終選擇使用mysqlclient。
以上都沒有解決我的問題,我仍然面臨連接錯誤。
我嘗試了幾次隨機測試,不小心使用了 root 和配置文件中的 skip-grant-tables 選項,我能夠使用 SSH python 代碼登錄 mysql,但這不是原因,因為普通的新創建的用戶仍然不能無論我在代碼中訪問什么主機,localhost,127.0.0.1,域,...。
所以我撤銷了跳過授權表選項因為沒有保護是有風險的(僅用於測試)。
最近,默認情況下 MySQL 服務器中已經存在用戶“root”,我發現它有 4 個條目,所以我嘗試在 webmin -> 服務器 -> MySQL 服務器 -> 用戶權限中創建 4 個單獨的類似條目記錄。
這些記錄具有相同的用戶名和較少的權限,但分配的主機內容相似。 它們是 'local' 、 '127.0.0.1' 、 'myservername.vps.provider.ca' 、 '::1'
(不知道最后一個是什么意思)
而且,Bingo,在添加了以上 4 個條目后,新用戶可以使用通過 python3 代碼提供的密碼 authenthicate 登錄。
(記住第一次,你必須在MySQL Server頁面中設置MySQL Admin 'root'密碼,這樣密碼登錄認證功能才會起作用,並且該密碼不需要與系統的root密碼相同)
就是這樣,這需要我 6 個小時。 希望它也可以幫助使用 webmin 的人。 如果它對您有幫助,請投贊成票。 謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.