【问题标题】:Remote access to mySQL using Python使用 Python 远程访问 mySQL
【发布时间】:2017-06-04 15:00:18
【问题描述】:

我无法通过 Python 远程连接到 mySQL 数据库。

我使用以下连接到 mySQL:

import mysql.connector
cnx = mysql.connector.connect(host='XXX.XXX.XXX.X',user='XXXX',password='XXXXXX',database='testdb')

但我收到以下错误:

2003: Can't connect to MySQL server on '%HOST%:3306' (10060 A connection attempt failed because the connected party did not properly respond after a period of time, or established   connection failed because connected host has failed to respond)

服务器正在运行,当我在计算机上运行相同的代码时,我使用 'localhost' 运行服务器 导入 mysql.connector cnx =

mysql.connector.connect(host='localhost',user='XXXX',password='XXXXXX',database='testdb')

它有效,我可以修改数据库中的数据。我正在尝试从另一台计算机远程连接它。

我尝试过使用GRANT ALL ON *.* TO User@Host IDENTIFIED BY 'password';,但没有结果。我检查了我的防火墙并允许通过默认使用的端口 3306 进行所有传入和传出连接。

我是 mySQL 的新手,真的不知道该怎么做。我什至不知道我是否使用了正确的主机名 :') 我使用了运行服务器的计算机的 IP 地址,我认为这是正确的。

【问题讨论】:

    标签: python mysql database


    【解决方案1】:

    您不需要将所有特权授予用户。你需要告诉 MYSQL 这个用户可以从远程登录。

    事实上,由于您现在允许通过此用户帐户进行远程访问,您应该确保它只能访问它需要的数据库,并且绝对不能使用GRANT

    例如

    CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
    

    将允许该用户从任何 IP 地址进行连接。为了更安全,您应该尝试更具体,并尽可能指定一个单独的 IP 地址

    CREATE USER 'myuser'@'11.22.33.44' IDENTIFIED BY 'mypass';
    

    请记住,您正在这里创建一个新用户帐户,因为您已经有一个 myuser@localhost

    无论哪种方式,您都需要确保密码是强密码,特别是您使用 % 任何 ip 选项

    【讨论】:

    • 这并不能解决我的问题。它只是创建了另一个无法连接到数据库的用户。我仍然得到同样的错误
    • 然后检查防火墙没有阻止你
    • 我这样做是为了让我的防火墙允许所有 IP 的端口 3306 的传入和传出连接。
    猜你喜欢
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    相关资源
    最近更新 更多