2017-01-19 53 views
1

我无法通过Python远程连接到mySQL数据库。使用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' import mysql.connector cnx =

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

它的工作原理,我可以修改数据库中的数据。我试图从另一台计算机远程连接它。

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

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

我迷路了,任何帮助将不胜感激!

回答

0

你不需要授予用户所有权限。您需要告诉MYSQL该用户可以从远程位置登录。

事实上,你是允许通过该用户帐户的远程访问,现在,你应该确保它只能访问数据库(一个或多个),它需要的,绝对不能使用GRANT

例如

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

将允许此用户从任何IP地址连接。为了更安全,你应该尝试更加具体,并指定一个单独的IP地址,如果你能

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

记住,你在这里创建一个新的用户帐户,因为你已经有了一个 [email protected]

无论哪种方式你需要确保密码是一个强大的,特别是你使用%任何IP选项

+0

这并不能解决我的问题。它只会创建另一个无法连接到数据库的用户。我仍然得到相同的错误 – EerlijkeDame

+0

然后检查防火墙没有阻止你 – RiggsFolly

+0

我做到了,所以我的防火墙允许所有IP的端口3306的传入和传出连接。 – EerlijkeDame