Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django无法连接到MySQL服务器_Python_Mysql_Django - Fatal编程技术网

Python Django无法连接到MySQL服务器

Python Django无法连接到MySQL服务器,python,mysql,django,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文件:

我有一个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连接器/python

我不使用虚拟环境,因为我的笔记本电脑中只有一个项目。因此,没有必要孤立Python

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

你有什么想法吗


非常感谢;)

看起来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条目。

首先,您需要通过编辑
my.cnf
文件并注释以
bind address
开头的行来允许远程连接,如下所示(您也可以通过您的机器ip地址更改
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\u Civil
上授予特权,您可以尝试:

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

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

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

    docker exec-it容器\u ID bash

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


  • 希望这有帮助

    看起来远程计算机不接受来自笔记本电脑的连接。向管理数据库服务器的人寻求帮助。即使您只有一个项目,使用virtual env始终是一件好事。对于这个问题,请确保您的mysql数据库接受远程连接。毫不奇怪,您的办公室不允许来自外部IPI的mysql端口上的传入连接,只允许所有用户都有权限。但我不知道这样做的过程。我可以访问这个虚拟服务器,因为我创建了它并添加了MySQL数据库。我不知道如何才能完全访问我的笔记本电脑。从MySQL执行privileges命令是否正常:
    Query OK,0行受影响(0.00秒)
    ?我不记得命令输出,但您可以在运行这些命令后检查应用程序的连接
    mysql> GRANT ALL PRIVILEGES ON Etat_Civil.* TO 'root'@'172.30.10.%'