Python MYSQL将无法连接



我一直在帮助解决旧UBUNTU 16服务器上的一个进程。在我们了解网站的工作原理之前,我们无法将其迁移到新服务器,因为我们需要重新创建和排除故障。

基本上它是一个python3脚本连接到MYSQL数据库,读取一些数据,并在一定条件下更新数据。它基本上与ZOHO相关联,因此需要这种编程语言。

错误被诊断为mysql连接错误。错误111连接被拒绝。数据库为localhost

我已经100%验证了用户名,密码和数据库可见性的访问,端口3306是开放的。我可以在CLU上使用MYSQL命令登录并显示数据库及其表。

连接器100%从config.py中拉入正确的变量,因为我在连接器之前添加了打印(HOST, DBASE, USER, PASSWORD)并验证了它们是正确的。

我也尝试过127.0.0.1而不是localhost。我也(不要射我)放入根用户名和密码,以消除任何权限问题

我想知道是否有可能在python中扩展mysql错误,这样我就可以得到一个非常明确的信息,即什么部分导致了一个问题。在MYSQL中是否有任何命令可以被发出来专门阻止python。

我已经禁用了UFW以防万一,没有区别,MYSQL的一般日志似乎不包含任何有用的

完全错误:

mysql.connector.errors。接口错误:2003:Can't connect to MySQL server on '127.0.0.1:3306' (111 Connection refused)

注意:服务器是Ubuntu 16,运行MYSQL 5.7.26-0ubuntu0.16.04.1,只能在本地主机访问。Python是2.7.12

如前所述,这是一个旧服务器,我想尽快报废,但直到我能证明zoho连接器是可修复的,我们不能继续作为一个阻塞器。

如下例所示。

端口与主机分离

import mysql.connector
cnx = mysql.connector.connect(
host='localhost',
database='import_test',
user='testuser',
password='password***',
port=3306
)

原来是所有问题中最基本的。在我们克隆的旧服务器上,一切都是开放的,零锁定,包括MYSQL监听世界。在新服务器上,mysql已经启用了跳过网络。

当web实例愉快地直接连接到套接字时,mysql没有在端口3306上主动侦听。我已经更改了my.cnf以启用网络,但另一个问题是阻止这些更改发生。

当我mysql在端口3306上工作,我可以看到它听,python现在连接好了的一些答案是正确的。MYSQL在全球范围内"不工作"。然而,这在安全性方面是一个倒退。我不希望MYSQL向世界开放

所以我修改了代码,使用unix套接字/var/run/mysqld/mysqld.袜子,重新启用跳网,瞧……python现在一切正常,端口3306再次关闭,我第一次尝试python完成

我的配置文件将DATABASE定义为本地主机,USER和PASSWORD,但现在将SOCKET定义为/var/run/mysqld/mysqldSock和我的代码是

import mysql.connector
from models import ExportRecord
from config import HOST, USER, PASSWORD, DATABASE, SOCKET
def connect():
return mysql.connector.connect(host=HOST, user=USER, passwd=PASSWORD, database=DATABASE, unix_socket=SOCKET)

最新更新