Django无法连接到MySQL

2024-05-15 02:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django版本(1.10),它安装在我的MacBookPro(El Capitan OS X)上,我想把API连接到MySQL数据库,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。

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

你有什么想法吗?

非常感谢;)


Tags: 项目django版本网络api数据库db远程
3条回答

看起来MySQL被配置为只在本地主机上侦听。

您可以从客户机运行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的第二个条目。

问题可能是“主机”:“172.30.10.58” 您可以将IP地址更改为主机名。

  1. 如果您使用的是Ubuntu,请在 sudo vi/etc/hostname和sudo vi/etc/hosts
  2. 如果你正在使用docker,请转到docker

    docker exec-it容器

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

希望能帮上忙!

首先,您需要通过编辑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.%'

相关问题 更多 >

    热门问题