今天我一直试图从我的家用机器(OSX)访问运行在我的远程工作机器(Ubuntu)上的MySQL,但我没有成功。
在我的工作机器上,我检查过以下内容:
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
感谢任何建议!
答案 0 :(得分:0)
Ubuntu有uwf
- 在某些vps安装中,它默认启用。所以,如果是,请sudo ufw allow 3306
。我正在写这个jsut以防你从你的工作机器运行nmap
。如果nmap显示从mac运行结果,那么这不适用。