Python Django无法连接到MySQL服务器
我有一个Django版本(1.10),安装在我的MacBookPro(El Capitan OS X)上,我想将API连接到我的MySQL数据库,该数据库位于一个远程服务器上(Ubuntu-与我的工作网络相同的网络) 我在运行Django服务器时遇到此错误: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.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地址更改为主机名
希望这有帮助 看起来远程计算机不接受来自笔记本电脑的连接。向管理数据库服务器的人寻求帮助。即使您只有一个项目,使用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.%'