1. 排除网络或防火墙问题
配置防火墙,开启3306端口
# vim /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)
/etc/init.d/iptables restart(重启防火墙使配置生效)
2. 检查用户访问权限
MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost,那么这个用户就只能本机访问, 其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问。
你想root用户名使用root密码从任何主机连接到MySQL服务器的话。
登陆远程服务器
# mysql -uroot -proot
查看host:
use mysql
select host,user from user;
这里并没有开启 允许远程连接
运行命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
再次查看
select host,user from user;
设置成功退出mysql > quit
重启mysql
# service mysql restart
3、配置云服务器的安全策略组
4、查看服务器3306端口是否运行
进入到你的远程服务器输入命令
$ netstat -ntlp
运行lsof -i:3306命令行查询3306是否被使用
$ lsof -i:3306
运行ps aux|grep MySQL命令行看mysql是否在运行
$ ps aux|grep mysql
有时候是没有运行的
mysql服务虽然在运行,可以在本地操作,但没有运行在3306端口!!!fuck!
如果你是用的linux版的xampp就蛋疼了!
此时修改mysql的配置文件如在xampp情况是在 /opt/lampp/etc/my.cnf中
$ vim /opt/lampp/etc/my.cnf
将此段下面的参数skip-networking注释重启mysql服务,远程连接mysql正常。
#skip-networking
原因:参数skip-networking起的作用是:mysql不再在TCP / IP端口上进行监听,导致无法远程连接。