【发布时间】:2016-01-15 11:25:17
【问题描述】:
今天我一直在尝试从我的家用机器 (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
感谢您的任何建议!
【问题讨论】:
标签: php mysql ubuntu ssh tunneling