我使用mysql.connector python库使用以下命令更改本地SQL服务器数据库:
from __future__ import print_function
import mysql.connector as kk
cnx = kk.connect(user='root', password='password123',
host='localhost',
database='db')
cursor = cnx.cursor(buffered=True)
sql = "DELETE FROM examples WHERE id = 4"
number_of_rows = cursor.execute(sql)
cnx.commit()
cnx.close()
这样可以正常工作,但是当我尝试使用相同的代码只更改'host'参数时,可以使用
host='xxx.xxx.xxx.xxx'
(其中IP是连接到本地网络的服务器的IP。),它不会更新该服务器中的特定数据库。
抛出的错误类似于:
mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on 'xx.xxx.x.xx' (10060)
为什么这不起作用?
答案 0 :(得分:0)
首先,您必须检查您的本地IP是否可以访问您的远程服务器(检查您的服务器是否是IP限制),检查您的mysql数据库是否使用默认端口,如果不是,您必须准确代码中的端口。
答案 1 :(得分:0)
检查用于连接远程主机上的数据库的数据库用户是否具有正确的访问权限和权限。
您可以使用以下命令从命令行进行测试:
mysql -u root -p password123 - h xxx.xxx.xxx.xxx db
如果这不起作用,则调试如下:
ping xxx.xxx.xxx.xxx。如果主机可访问,则转到下一步,如果没有,则此IP被阻止,不可用或不正确。仔细检查IP并检查它们是否在同一网络上。
检查mysqld是否在主机上运行。 service mysqld restart。如果它继续下一步,如果没有启动mysqld。如果它不想启动,请安装它,启动服务并设置数据库。
Telnet特定端口以查看端口是否被阻止。 telnet xxx.xxx.xxx.xxx 3306.如果此方法有效,请继续执行下一步。如果这不起作用,请检查您的IPTable并检查端口是否在远程主机上打开。
将用户添加到主机上的mysql:https://dev.mysql.com/doc/refman/8.0/en/adding-users.html 重新启动mysqld并再次尝试上面的命令。