我正在开发一个存在MySQL数据库的django应用程序。 我的django应用程序和数据库设置在一台机器上。
现在我有另外两台运行脚本的机器需要远程连接到我主机上的MySQL数据库。
所以在我的主机上。我这样做了:
sudo nano /etc/mysql/my.cnf
然后改变了
bind-address = 127.0.0.1
到
bind-address = [my public ip address]
之后,我通过防火墙打开了对数据库端口的远程访问 通过运行:
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地址]
密码:my_password
port:3306
数据库:我的数据库名称
主持人:[我的公共IP地址]
它没有连接并给出了错误'访问被拒绝'。还有什么我需要做的才能让它发挥作用吗?有什么想法吗?
更新
我尝试使用命令行从我的其他服务器连接到主服务器:
mysql -u newuser -p -h [my main server ip address
]
和
mysql -u newuser@[my main server ip address] -p -h [my main server ip address]
它给了我这个错误:主机' [我的本地IP地址]'不允许连接到这个MySQL服务器
答案 0 :(得分:1)
您为允许远程连接所做的设置看起来不错(虽然您没有提到重启mysql,但我认为已经完成了)。此外,我假设没有NAT,所有涉及的机器都直接连接到互联网(ifconfig显示WAN IP)。
我建议尝试连接mysql命令行客户端 - 它可能会提供更清晰的错误消息。虽然“拒绝访问”并且#39;一般意味着密码错误。我认为如果找不到用户名@ hostname,则会出现不同的错误消息。
答案 1 :(得分:1)
而不是做机器IP地址,允许任何主机'用户'@'%'并查看它是否有效。
如果是,请检查日志以查看您的主机名显示给服务器的内容。
不需要更改绑定地址。