首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python MySQL mysql.connector远程连接到mysql.connector

用Python MySQL mysql.connector远程连接到mysql.connector
EN

Stack Overflow用户
提问于 2016-10-28 17:42:45
回答 3查看 16K关注 0票数 5

以下代码(运行于与mysql服务器不同的计算机,位于同一个局域网内)使用Python3和mysql.connector在本地连接到mysql.connector数据库:

代码语言:javascript
复制
import mysql.connector
cnx = mysql.connector.connect(host='192.168.0.24', database='import_test',user='user_builder', password='password***', port=3309)

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

代码语言:javascript
复制
import mysql.connector
cnx = mysql.connector.connect(host='http://imaginarywebsite.ddns.net', database='import_test',user='user_builder', password='password***', port=3309)

相反,我收到以下错误:

代码语言:javascript
复制
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文件的摘录:

代码语言:javascript
复制
!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地址将本地连接到数据库,因此我确信问题不是来自“特权授予”或任何登录/密码/端口错误。
  • 通过phpmyadmin使用http://imaginarywebsite.ddns.net/phpmyadmin远程连接,所以我确信问题不是来自我的DNS服务器。

,以下是我的三个问题:

  1. 知道问题出在哪里吗?
  2. 是否应该使用SSH连接来解决我的问题?
  3. 如果SSH是解决方案,那么是否可以通过mysql.connector使用SSH参数,因为它似乎没有出现在正式文档中?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-31 13:30:43

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

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

票数 0
EN

Stack Overflow用户

发布于 2016-10-31 11:13:56

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

代码语言:javascript
复制
import mysql.connector

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

Stack Overflow用户

发布于 2016-10-28 18:28:34

如果您在运行mysql守护进程的同一台服务器上运行PHPMyAdmin,情况如下:您的all服务器配置为接受来自所有接口的连接,但mysql配置为只接受本地连接。由于PHPMyAdmin是与mysql并置的,所以它只能进行本地连接,这也是它工作的原因,但您的代码不工作。

因此,请再次检查mysql守护进程是否配置为侦听接口。您应该在您的bind-address=0.0.0.0文件中有一个类似于mysql.cnf的行。有关更多详细信息,请参阅this answer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40310511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档