【问题标题】:How to connect to MySQL server on another host?如何连接到另一台主机上的 MySQL 服务器?
【发布时间】:2011-10-31 02:37:07
【问题描述】:

Django 可以通过将settings.py 中的HOSTPORT 设置为''(空字符串)来简单地连接到自己的MySQL 服务器:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'dbname',                   # Or path to database file if using sqlite3.
        'USER': 'root',                      # Not used with sqlite3.
        'PASSWORD': 'root',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

我的问题是如何使它能够连接另一台主机上的另一个数据库?假设我的机器是192.168.1.33,另一台要连接的机器是192.168.1.34,两者都在同一个网络上。我尝试将其设置为:

'HOST': '192.168.1.34',
'PORT': '3306',

'HOST': '192.168.1.34',
'PORT': '',

但两者都导致了这个OperationalError

(2003, "Can't connect to MySQL server on '192.168.1.34'(10061)")

解决方案:感谢@cdhowie

  1. /etc/mysql/my.cnf中配置你想要的主机的绑定地址

  2. 为您要授予访问权限的主机创建一个新用户(如果您没有)。

  3. 检查该用户的权限(如果访问被拒绝)。

【问题讨论】:

  • 你检查过 192.168.1.34 上的防火墙吗? 192.168.1.34 上的 MySQL 是否绑定到 127.0.0.1?
  • @cdhowie 我不知道如何检查 MySQL 的防火墙和边界。请告诉我该怎么做。
  • MySQL 服务器运行在什么操作系统上?
  • 默认情况下,基于 Debian 的发行版将 MySQL 配置为仅绑定到 localhost,这意味着其他主机无法连接到它。修复你的 MySQL 配置,它就会工作。
  • @cdhowie:这应该是一个答案

标签: mysql django database-connection


【解决方案1】:

默认情况下,基于 Debian 的发行版将 MySQL 配置为仅绑定到 localhost,这意味着其他主机无法连接到它。修复你的 MySQL 配置,它就会工作。

编辑/etc/mysql/my.cnf 并更改这一行:

bind-address = 127.0.0.1

到这里:

bind-address = 0.0.0.0

这会将 MySQL 暴露给所有网络接口,因此如果此服务器暴露给不受信任的主机,请确保您有适当的安全措施。

【讨论】:

  • 工作正常!!非常感谢,但正如你提到的,这让我想到了安全性,因为它对每个 ip 开放
  • @Davo 当然,您还想使用防火墙来限制对服务器的访问。 ;)
  • 感谢您的回答:)
猜你喜欢
  • 2016-08-10
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 2019-08-18
  • 1970-01-01
  • 2014-02-23
相关资源
最近更新 更多