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)
所以,这是目前有效的:
这是我的 3 个问题:
谢谢。
尝试编辑您的非工作示例(主机中没有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)
实际上答案是使用我的服务器的全局IP地址而不是域名,可能是名称管理的问题。
将 host=' http://imaginarywebsite.ddns.net ' 替换为 'host=85.23.56.****" 使其工作。