1. 首先得让防火墙开放MySQL的端口,默认为3306
iptables -A INPUT -p tcp --deport 3306 -j ACCEPT
2. 所使用的MySQL帐号得支持远程连接
这个就简单多了,我们知道mysql.user这张表中有个Host字段,顾名思义,当然是指允许从哪里登录(主机名或主机IP);比如说将某个帐号的Host设置为%
mysql> update user set Host='%' where User='userName';
做完这步之后还得重启MySQL或者运行:
mysql> flush privileges;
这样,更新后的用户权限才能生效,当然了,将Host设置为%
是相当不安全的,因为这样以来任何一台主机都可以连接到你的MySQL上,所以一般是用%
作为通配符来匹配一个IP地址段,或者满足匹配条件的主机名。
3. 成功了吗?
作为上诉两步之后,我们运行:
mysql -h 121.48.159.100 -p3306 -uuser -p -Ddatabase
结果是什么情况呢?仍然会报错:
ERROR 2003 (HY000): Can't connect to MySQL server on '121.48.159.100' (110)
4. 解决方案
对于这个问题,郁闷了很久,很不容易在网上找到了一个可行的解决方案:
修改配置文件/etc/mysql/my.cnf,将bind-address的值设置为0.0.0.0,然后重启MySQL
/etc/init.d/mysql restart
至此才真的可以远程连接MySQL了