Django 无法连接到 MySQL 服务器。

3

我有一个安装在我的MacBookPro(El Capitan OS X)上的Django版本(1.10),我想将API连接到位于远程服务器(Ubuntu - 与我的工作网络相同的网络)上的MySQL数据库。

当我运行Django服务器时,我会遇到以下错误:

django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '172.30.10.58' (61)")

这是我项目中的settings.py文件:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'Etat_Civil',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': '172.30.10.58',
        'PORT': '3306',
    }
}

在我的Mac上,我安装了mysqlclient / mysql connector/python
我没有使用虚拟环境,因为我的笔记本只有一个项目,所以不需要隔离Python。
我认为这可能是权限问题,但我真的不知道如何配置。我找到了一些教程,但每次都遇到问题。
你有什么想法吗?
非常感谢;)

看起来远程机器不接受来自你的笔记本电脑的连接。向管理数据库服务器的人寻求帮助。 - AKX
即使您只有一个项目,使用虚拟环境始终是一件好事。对于该问题,请确保您的MySQL数据库接受远程连接。 - ettanany
你的办公室不允许外部IP地址通过mysql端口进行入站连接,这并不令人感到意外。 - e4c5
我只需要允许所有用户的权限。但是我不知道如何进行此过程。我可以访问这个虚拟服务器,因为我创建了它并添加了MySQL数据库。我不确定如何将所有权限授予我的笔记本电脑。 - Essex
3个回答

2

看起来MySQL只配置在本地监听。

您可以通过在客户端机器上运行telnet 172.30.10.59 3306来测试此内容。

请尝试按照这里描述的配置步骤进行操作:这里

编辑/etc/mysql/my.cnf文件以配置MySQL可以接受来自网络主机的连接,将bind-address指令更改为服务器的IP地址。例如,将172.30.10.59替换为适当的地址。如果没有这样的条目-请取消注释或创建新行。

 bind-address = 172.30.10.59

然后使用以下命令重新启动mysqld:

 sudo service mysql restart

然后使用telnet测试或再次运行您的应用程序进行测试。此外,netstat将有第二个mysqld条目。


2

首先,您需要通过编辑my.cnf文件并注释以以下内容开头的行来允许远程连接(您也可以将127.0.0.1更改为您的机器IP地址):

#bind-address                   = 127.0.0.1

然后重新启动mysql服务:

sudo service mysql restart

按照以下方式为您的用户授予权限:

mysql> CREATE USER 'root'@'172.30.10.%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.30.10.%'

如果您只想在 Etat_Civil 上授予权限,可以尝试以下操作:

mysql> GRANT ALL PRIVILEGES ON Etat_Civil.* TO 'root'@'172.30.10.%'

当我从MySQL执行权限命令时,出现“Query OK, 0 rows affected (0.00 sec)”是正常的吗? - Essex
我不记得命令输出了,但是在运行这些命令后,您可以从应用程序中检查连接。 - ettanany

0
问题可能在于 'HOST': '172.30.10.58',你可以将IP地址更改为你的主机名。
  1. 如果你使用Ubuntu,请检查sudo vi /etc/hostname和sudo vi /etc/hosts中的名称。
  2. 如果你使用docker,请进入docker

    docker exec -it CONTAINER_ID bash

    sudo vi /etc/hostname和sudo vi /etc/hosts

希望这能帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接