2015-03-31 69 views
0

我使用查询MySQL数据库返回“拒绝访问”

db = MySQLdb.connect(host="machine01", user=local_settings.DB_USERNAME, passwd=local_settings.DB_PASSWORD, db=local_settings.DB_NAME)

连接到一个数据库,但我从machine02这样做的,我认为这将仍然有效,但它不。我得到

_mysql_exceptions.OperationalError: (1045, "Access denied for user 'test_user'@'machine02' (using password: YES)")

结果。但是,如果我简单地ssh到machine01并执行相同的查询,它工作得很好。是不是host点能够指定MySQL数据库的位置,并能够从任何其他主机查询它,而不必跳转到那里进行查询?

+0

这确实是'host'的要点,但服务器需要接受来自远程主机的连接。我建议检查此服务器配置 – Finwood 2015-03-31 15:27:56

+0

DB是否在默认端口(3306)上侦听?你能通过这个端口从machine02 telnet到machine01吗? – javajavajava 2015-03-31 15:32:27

+0

这似乎是问题所在 - 我本来预料会得到一个连接拒绝错误,而不仅仅是在错误的主机上进行查询。 – drjrm3 2015-03-31 15:35:48

回答

0

确保您的防火墙没有阻止端口3306

0

错误告诉你“test_user”在机“machine02”是不允许的。可能是用户'test_user'在'mysql.user'表中注册为'localhost'作为连接的主机。使用这样的查询来检查它:选择主机,来自mysql.user的用户;

此致敬礼, 奥斯卡。