Django无法连接到MySQL服务器

时间:2016-11-23 08:42:32

标签: python mysql django

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

我在运行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。

我认为这可能是一个许可问题,但我真的不知道如何配置。我找到了一些教程但每次都遇到问题。

你有什么想法吗?

非常感谢你;)

3 个答案:

答案 0 :(得分:2)

看起来MySQL配置为仅在localhost上侦听。

您可以通过从客户端计算机运行telnet 172.30.10.59 3306来测试。

请尝试按照here

所述的配置步骤进行操作

编辑/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提供第二个条目。

答案 1 :(得分:2)

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

#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.%'

答案 2 :(得分:0)

问题可能是“主机”:“ 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

希望获得帮助!