MySQL远程连接不上的排查解决方法

The wise man is always a good listener

经常有用户安装了MySQL数据库后,在远程连接数据库进行管理或者远程web调用的时候,出现远程连接不上的问题,经常遇到代码为1130的错误,下面就给大家讲一下遇到这种情况后的排查处理思路:

排查内在因素

MySQL数据库在安装完毕时,默认情况下所有账户是不开启远程访问支持的,可能是出于安全考虑,因此如果想通过远程进行连接管理,需要给对应的账户赋予远程连接的权限。

所以首先要排查的是连接时所使用的账户是不是具有远程访问权限,可在数据库命令行终端执行下面的命令查询:

mysql> select user,host from mysql.user;

通过打印出来的结果就可以判断账户对应的权限,需要排查下查到的账户是本地权限还是具有远程权限,如果你在这一步看到的远程权限是正确的,就按照下面“排查外界因素”的方法进行排查,很有可能是端口没有正确开放导致。

如果这一步看到的账户远程权限不正确,或者对应的账户并没有开放远程权限,则按照下面的方法进行远程权限设置,具体方法是:

1、如果是root账户要进行远程连接,在数据库命令行终端执行下面的命令对root账户赋予远程权限

mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;  
//设置允许远程登录的用户名和密码,其中%表示所有主机,也可指定某个ip段,比如192.168.1.%,或指定固定ip;123456更换为你要设置的密码
mysql> flush privileges;     //重载权限

2、如果是要对某个数据库对应的账户设置远程连接,执行下面的命令

mysql> grant all privileges on ceshidb.* to 'ceshi'@'%' identified by '123456';  
//设置允许远程登录的用户名和密码,其中%表示所有主机,也可指定某个ip段,比如192.168.1.%,或指定固定ip;
//ceshidb更改为你要设置远程管理的数据库名;ceshi更换为这个数据库对应的用户名;123456更换为你要设置的密码
mysql> flush privileges;     //重载权限

命令执行完毕后,可以通过最上面的查询命令查看对应权限是否成功设置,确定权限没问题后,按照下面的方法检查并开放数据库端口,允许外网访问即可。

排查外界因素

遇到这种情况首先要排查外界影响因素,具体排除的地方有这么几点:

1、数据库服务器所在机房出口是不是有防火墙屏蔽了3306端口。

2、数据库服务器如果是云服务器,还要检查服务器所连接的安全组(云防火墙)是不是没有开放3306端口。

3、数据库服务器内置防火墙是不是没有开放3306端口。

4、数据库服务器中安装的安全软件(安全狗、云锁等)是不是屏蔽了3306端口。

5、数据库服务器本地安全策略中的ipsec策略有没有屏蔽3306端口(很多服务商为了安全,都会在系统模板中导入安全策略,屏蔽一些敏感端口,一定要检查下)。

一般情况下,只要MySQL本身配置没有问题,检查上面几点就可以找到问题所在。

最后需要提醒一下:MySQL账户远程权限允许后,会给数据库安全带来很大的威胁,如果不是很必要,建议克服一下其他困难,尽可能在服务器本地进行管理和操作,以免被黑。


Like a child, always believe in hope, I believe the dream

随机数:697599013661
本文来源于:https://www.fcblog.cn/post/10.html

    © 版权声明
    THE END
    喜欢就支持一下吧♡
    点赞0
    分享
    评论 抢沙发