mysql 远程连接不上,解决办法

***如果是云服务器,检查一下安全组设置,默认是没开3306端口的,坑惨了。***

 

之前遇到过MySQL本地可以连接但是远程连不上的问题,没有记录,今天在云上新申请的服务器上又遇到这个问题,记录一下解决过程。


1.排除网络或防火墙问题
先看是否能ping通远程服务器,ping 192.168.1.211,如果不可以就是网络问题。然后,检查端口是否被防火墙挡住了,telnet 192.168.1.211 3306,如果连接失败,配置防火墙。

配置防火墙,开启3306端口
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)
/etc/init.d/iptables restart(重启防火墙使配置生效)

查看防火墙状态

iptables -L -n -v

开启3306

iptables -I INPUT -p tcp --dport 3306 -j ACCEPT


2.检查MySQL配置
如果开启了防火墙,telnet还是失败,通过netstat查看3306的端口状态:
netstat -apn|grep 3306
tcp6    0    0 127.0.0.1:3306    :::*    LISTEN        13524/mysqld

注意地方,这说明3306被绑定到了本地。检查一下my.cnf的配置,这里可以配置绑定ip地址。
bind-address=addr
不配置或者IP配置为0.0.0.0,表示监听所有客户端连接。

ps:我开启3306端口,并且检查MySQL配置之后,telent仍然失败,但是在本机telnet是ok的,再三确认了配置没有问题。后来跟我们的ucloud账号管理员提了一下,才知道ucloud管理后台也需要开启3306端口,用云服务器的留意这个。


3.检查用户访问权限
MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost,那么这个用户就只能本机访问,其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问。

mysql 远程连接不上,解决办法_第1张图片

转自:https://blog.csdn.net/baochanghong/article/details/51537154

 

添加外部访问账号:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

==========================================================================================

刚安装了mysql服务器,使用远程管理工具总是连接不上,因为知道mysql的默认端口是3306,于是使用telnet连接这个端口,

telnet 192.168.1.10 3306

还是连接不上,于是怀疑是防火墙问题,便将防火墙关掉,

service iptables stop

再次telnet,还是没办法连上这个端口,然后通过netstat查看3306的端口状态是怎么样的

netstat -apn|grep 3360

终于发现了一个比较奇怪的东西

tcp        0      0 127.0.0.1:3306            0.0.0.0:*               LISTEN      3783/mysqld

上面标红的地方,监听端口正常,但却绑定了本地回旋地址,难怪总是连接不上,于是查了下资料,找到了解决办法:

修改mysql的配置文件/etc/mysql/my.conf,将bind-address后面增加远程访问IP地址或者禁掉这句话就可以让远程机登陆访问了。

记得要重启mysql服务哦

service mysql restart

转自:https://blog.csdn.net/fhxpp_27/article/details/8442555/

你可能感兴趣的:(Sql)