簡體   English   中英

使用 Python mysql.connector 遠程連接 MySQL

[英]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

所以,這是目前有效的:

  • 使用 192.168.0.24:3309 地址在本地連接到數據庫,所以我確定問題不是來自“權限授予”或任何登錄/密碼/端口錯誤。
  • 使用http://imaginarywebsite.ddns.net/phpmyadmin通過 phpmyadmin 遠程連接,所以我確定問題不是來自我的 DNS 服務器。

這是我的 3 個問題:

  1. 任何想法問題可能來自哪里?
  2. 使用 SSH 連接應該可以解決我的問題嗎?
  3. 如果 SSH 是解決方案,是否可以通過 mysql.connector 使用 SSH 參數,因為它似乎沒有出現在官方文檔中?

謝謝。

嘗試將您的非工作示例編輯為此(主機中沒有 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.

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