今天我一直在尝试访问MySQL运行在我的远程工作机(Ubuntu),从我的家庭机器(OSX),我没有成功。
在我的工作机器上,我检查了以下内容:
sudo netstat -ntlup | grep mysql
为
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 23692/mysqld
和nmap
告诉我
PORT STATE SERVICE
3306/tcp open mysql
在/etc/mysql/my.cnf
中我设置了bind-address = 0.0.0.0
我还运行了以下iptables
规则:
iptables -A INPUT -i lo -p tcp --dport 3306 -j ACCEPT
iptables -A OUTPUT -o lo -p tcp --sport 3306 -j ACCEPT
我还可以查什么?
如果有一些公司网络规则阻止我的MySQL访问,我可以检查什么来找到这个?
我能使这个工作的唯一方法是ssh隧道:
ssh -L 8080:localhost:3306 my_user_name@my_dev_machine_IP
然后如果我做了
mysql -h 127.0.0.1 --port=8080 -u root -p
我能进去。如果我关闭ssh隧道,那么我就不能通过mysql登录,甚至不能通过telnet remote_IP 3306
登录。
但是这不是我想要的,因为我需要PHP代码在我的本地机器上运行,以便能够访问远程数据库。
我也(希望是暂时的)向所有主机/IP开放了对MySQL数据库的访问:
GRANT ALL PRIVILEGES ON *.* TO 'application_username'@'%'
FLUSH PRIVILEGES
感谢收到任何建议!
Ubuntu有uwf
-在一些vps安装中它是默认启用的。所以,如果是,执行sudo ufw allow 3306
。我写这个只是为了以防你在工作机器上运行nmap
。