使用Python mysql.connector远程连接MySQL

时间:2016-10-28 17:42:46

标签: 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)

但是,以下代码,远程连接到同一个数据库,不起作用

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参数,因为它似乎没有出现在官方文档中?
  4. 感谢。

3 个答案:

答案 0 :(得分:1)

如果您在运行mysql守护程序的同一台服务器上运行PHPMyAdmin,那么发生了什么:您的Web服务器已配置为接受来自所有接口的连接,但配置了mysql只接受本地连接。由于PHPMyAdmin与mysql共存,它只会建立本地连接,这就是它工作的原因,但是你的代码没有。

因此,请仔细检查您的mysql守护程序是否配置为侦听接口。你的mysql.cnf文件中应该有一行bind-address=0.0.0.0。有关详细信息,请参阅this answer

答案 1 :(得分:1)

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

import mysql.connector
cnx = mysql.connector.connect(host='imaginarywebsite.ddns.net', database='import_test',user='user_builder', password='password***', port=3309)

答案 2 :(得分:-1)

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

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

相关问题