使用 Python mysql.connector 远程连接 MySQL

yln*_*nor 5 python mysql ssh remote-access 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)
Run Code Online (Sandbox Code Playgroud)

但是,下面的代码,远程连接到同一个数据库, 不能正常工作

import mysql.connector
cnx = mysql.connector.connect(host='http://imaginarywebsite.ddns.net', database='import_test',user='user_builder', password='password***', port=3309)
Run Code Online (Sandbox Code Playgroud)

相反,我收到以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

这是我的 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
Run Code Online (Sandbox Code Playgroud)

所以,这是目前有效的:

  • 使用 192.168.0.24:3309 地址在本地连接到数据库,所以我确定问题不是来自“权限授予”或任何登录/密码/端口错误。
  • 使用http://imaginarywebsite.ddns.net/phpmyadmin通过 phpmyadmin 远程连接,所以我确定问题不是来自我的 DNS 服务器。

这是我的 3 个问题:

  1. 任何想法问题可能来自哪里?
  2. 使用 SSH 连接应该可以解决我的问题吗?
  3. 如果 SSH 是解决方案,是否可以通过 mysql.connector 使用 SSH 参数,因为它似乎没有出现在官方文档中?

谢谢。

Ale*_*nov 9

尝试编辑您的非工作示例(主机中没有http)

import mysql.connector

cnx = mysql.connector.connect(
    host='imaginarywebsite.ddns.net',
    database='import_test',
    user='user_builder',
    password='password***',
    port=3309
)
Run Code Online (Sandbox Code Playgroud)


yln*_*nor 0

实际上答案是使用我的服务器的全局IP地址而不是域名,可能是名称管理的问题。

将 host=' http://imaginarywebsite.ddns.net ' 替换为 'host=85.23.56.****" 使其工作。