![](/img/trans.png)
[英]Python | MySQL | AttributeError: module 'mysql.connector' has no attribute 'connect'
[英]Remotely connect to MySQL with Python mysql.connector
以下代碼(從與 mysql 服務器不同的機器運行,在同一局域網內),使用 Python3 和 mysql.connector 工作在本地連接到 MySQL 數據庫:
import mysql.connector
cnx = mysql.connector.connect(host='192.168.0.24', database='import_test',user='user_builder', password='password***', port=3309)
但是,下面的代碼,遠程連接到同一個數據庫,不能正常工作:
import mysql.connector
cnx = mysql.connector.connect(host='http://imaginarywebsite.ddns.net', database='import_test',user='user_builder', password='password***', port=3309)
相反,我收到以下錯誤:
File "C:\Users\****\AppData\Roaming\Python\Python34\site-packages\mysql\connector\network.py", line 464, in open_connection
errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'http://imaginarywebsite.ddns.net:3309' (11004 getaddrinfo failed)
這是我的 my.cnf 文件的摘錄:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
innodb_buffer_pool_size=4G
innodb_log_file_size=1024M
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=7000
innodb_thread_concurrency=0
port = 3309
bind-address = 0.0.0.0
所以,這是目前有效的:
這是我的 3 個問題:
謝謝。
嘗試將您的非工作示例編輯為此(主機中沒有 http)
import mysql.connector
cnx = mysql.connector.connect(
host='imaginarywebsite.ddns.net',
database='import_test',
user='user_builder',
password='password***',
port=3309
)
如果您在運行 mysql 守護程序的同一台服務器上運行 PHPMyAdmin,則會發生以下情況:您的網絡服務器配置為接受來自所有接口的連接,但 mysql 配置為僅接受本地連接。 由於 PHPMyAdmin 與 mysql 位於同一位置,因此它只會建立本地連接,這就是為什么它可以工作,但您的代碼卻不能。
因此,請仔細檢查您的 mysql 守護程序是否配置為偵聽接口。 您的 mysql.cnf 文件中應該有一行類似於bind-address=0.0.0.0
的內容。 有關更多詳細信息,請參閱此答案。
其實答案是使用我服務器的全局IP地址而不是域名,可能是名稱管理的問題。
將 host=' http://imaginarywebsite.ddns.net ' 替換為 'host=85.23.56.****' 使其工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.