如何在LAMP(Python)堆栈上打开远程MySQL连接

如何在LAMP(Python)堆栈上打开远程MySQL连接,python,mysql,linux,django,database,Python,Mysql,Linux,Django,Database,我正在开发一个django应用程序,其中有我的MySQL数据库。 我的django应用程序和数据库设置在一台机器上 现在我有另外两台运行脚本的机器,它们需要远程连接到我的主机中的MySQL数据库 所以在我的主机里。我已经这样做了: sudo nano /etc/mysql/my.cnf 然后改变 bind-address = 127.0.0.1 到 之后,我通过防火墙打开了对数据库端口的远程访问 通过运行: sudo ufw allow 3306/tcp sudo ser

我正在开发一个django应用程序,其中有我的MySQL数据库。 我的django应用程序和数据库设置在一台机器上

现在我有另外两台运行脚本的机器,它们需要远程连接到我的主机中的MySQL数据库

所以在我的主机里。我已经这样做了:

sudo nano /etc/mysql/my.cnf
然后改变

bind-address           = 127.0.0.1

之后,我通过防火墙打开了对数据库端口的远程访问 通过运行:

sudo ufw allow 3306/tcp
sudo service ufw restart
之后,我运行mysql并运行以下命令:

CREATE USER newuser@[main machine ip address] IDENTIFIED BY 'my password';

GRANT ALL PRIVILEGES ON * . * TO newuser@[main machine ip address];

FLUSH PRIVILEGES;
现在,当我尝试从桌面应用程序远程连接到数据库时,请使用:

用户名:newuser@[我的公共ip地址]

密码:我的密码

港口:3306

数据库:我的数据库名称

主机:[我的公共ip地址]

它没有连接,并给我们的错误“拒绝访问”。我还需要做些什么来让它工作吗?有什么想法吗

更新:

我已尝试使用以下命令行从其他服务器连接到主服务器:

mysql-u newuser-p-h[我的主服务器ip地址
]


这给了我一个错误:不允许主机“[我的本地ip地址]”连接到此MySQL服务器

您为允许远程连接所做的设置看起来不错(虽然您没有提到重新启动MySQL,但我假设已经完成了)。另外,我假设没有NAT,所有涉及的机器都直接连接到internet(ifconfig显示WAN ip)


我建议尝试连接mysql命令行客户端——它可能会提供更清晰的错误消息。尽管“拒绝访问”通常意味着密码不正确。我认为当username@hostname找不到。

您为允许远程连接所做的设置看起来不错(虽然您没有提到重新启动mysql,但我假设已经完成)。另外,我假设没有NAT,所有涉及的机器都直接连接到internet(ifconfig显示WAN ip)


我建议尝试连接mysql命令行客户端——它可能会提供更清晰的错误消息。尽管“拒绝访问”通常意味着密码不正确。我认为当username@hostname找不到。

请允许任何主机“用户”@“%”,而不是使用计算机ip地址,并查看它是否有效

如果是,请检查日志,查看服务器上显示的主机名


不需要更改绑定地址

不使用计算机ip地址,而是允许任何主机“用户”@“%”并查看它是否工作

如果是,请检查日志,查看服务器上显示的主机名


不需要更改绑定地址

嗯。因此,我尝试通过命令行从另一台服务器通过此服务器进行连接。它给了我一个错误:不允许主机“[我的本地ip地址]”连接到此MySQL服务器OK。因此,我尝试通过命令行从另一台服务器通过此服务器进行连接。它给了我一个错误:不允许主机“[我的本地ip地址]”连接到此MySQL服务器
CREATE USER newuser@[main machine ip address] IDENTIFIED BY 'my password';

GRANT ALL PRIVILEGES ON * . * TO newuser@[main machine ip address];

FLUSH PRIVILEGES;
mysql -u newuser@[my main server ip address] -p -h [my main server ip address]