我有一台 AZURE 虚拟机,上面安装了 MySQL 服务器,运行的是 ubuntu 13.04。我尝试远程连接到 MySQL 服务器,但收到简单的错误“无法连接到 {IP} 上的 MySQL 服务器”
我已经完成以下操作:
* commented out the bind-address within the /etc/mysql/my.cnf
* commented out skip-external-locking within the same my.cnf
* "ufw allow mysql"
* "iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT"
* setup an AZURE endpoint for mysql
* "sudo netstat -lpn | grep 3306" does indeed show mysql LISTENING
* "GRANT ALL ON *.* TO remote@'%' IDENTIFIED BY 'password';
* "GRANT ALL ON *.* TO remote@'localhost' IDENTIFIED BY 'password';
* "/etc/init.d/mysql restart"
* I can connect via SSH tunneling, but not without it
* I have spun up an identical ubuntu 13.04 server on rackspace and SUCCESSFULLY connected using the same procedures outlined here.
但是,以上方法都无法在我的 Azure 服务器上运行。我以为创建端点会起作用,但没有成功。有什么可以帮忙的吗?我是不是完全忽略了什么?
答案1
上面引用的“官方手册”对我来说不起作用,似乎需要设置一个 ssh 隧道才能完成此操作......即使按照指南操作后它仍然不起作用。
这是我的解决方案
对于 Ubuntu Azure VM,请参阅:
https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-create-lamp-stack/
特别是“允许远程访问 MySQL”部分
注释掉:
bind-address = 127.0.0.1
位于 /etc/mysql/my.cnf
跑步
sudo service mysql restart
并且我的远程连接正常 --- 只需确保你的虚拟机的 Azure 服务器门户中的端口 3306 已打开!
答案2
这简洁的指南对我的工作很有帮助。
虽然我已经完成了其他重要步骤,但我缺少的是这个:
3306 端口默认不开放,因此您需要先打开此端口,以便远程客户端可以连接到您的 MySQL 服务器。运行以下命令打开 TCP 端口 3306:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
运行以下命令检查端口 3306 是否打开:
sudo netstat -anltp|grep :3306
答案3
使用 sudo ufw status 检查你的防火墙。