通过Python连接到远程MySQL

时间:2015-03-04 10:14:17

标签: python mysql database server

我在远程服务器上安装了MySQL。我还创建了一些包含一些表的数据库,所有这些都通过SSH。

我创建了以下用户:

CREATE USER 'myname'@'localhost' IDENTIFIED BY 'mypassword';
CREATE USER 'remotMe'@'myIP' IDENTIFIED BY 'mypassword';

GRANT PRIVILEGES * . * TO 'myname'@'localhost';
GRANT PRIVILEGES * . * TO 'remoteMe'@'myIP';

现在,我想通过Python连接到这个MySQL服务器。我已经安装了PyMySQL。我正在尝试以下代码:

import pymysql
conn = pymysql.connect(host='ServerIP', port=3306, user='remoteMe', passwd='mypassword', db='myDB') 

但是这给了我一个connection refused错误。我是否需要配置其他内容才能使其正常工作?

2 个答案:

答案 0 :(得分:1)

connection refused错误消息实际意味着无法打开TCP套接字。服务器拒绝连接。这与身份验证或用户权限无关,因为在涉及MySQL服务器之前拒绝在OS级别上发生。可能的原因是:

  • MySQL服务器仅绑定到localhost→将侦听地址设置为服务器真实IP地址或mysql.conf中的0.0.0.0
  • 中间有防火墙→重新配置/停用防火墙
  • 您的连接详细信息(服务器/端口)错误→再次检查

答案 1 :(得分:1)

可能是MySQL绑定到localhost。假设你使用的是Linux机器:

在远程计算机上,修改/etc/mysql/my.cnf

查看bind-address=127.0.0.1,将其修改为bind-address=0.0.0.0,或者只删除该行。

重启MySQL

了解详情:http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_bind-address