无法远程连接服务器上的mysql

时间:2022-07-18 17:36:00

使用mysql管理工具连接服务器删过得mysql,显示连接被拒绝,但是在服务器上是可以登录mysql的。

无法远程连接通常以下几种情况:

首先,关闭mysql。        service mysqld stop

1】没有授权(这里介绍三种的方法)

                a) 查看授权

                     SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

           +-----------------------+ 
                        | host | 
                        +-----------------------+ 
                        | % | 
                        | 127.0.0.1 | 
                        +-----------------------+  

           host下面的字段:

                              %     代表任何主机都可以连接

                              127.0.0.1   表示该用户只能通过这个服务器地址连接

                b)  如果没有授权,修改授权

                     授权任何地址都可以连接

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

                     或者这样写:

                     grant select,delete,update,create,insert,drop on *.* to admin@"%" identified by "123456";

                c) 授权一个ip地址访问该数据库

                    本机ip自己通过cmd查看 ,假设这里我的本机ip是112.141.165.24

                    授权root用户,仅可以通过112.141.165.24访问服务器上的数据库。

                    GRANT ALL PRIVILEGES ON *.* TO 'root'@’112.141.165.24’ IDENTIFIED BY '123456' WITH GRANT OPTION;

            以上,授权后全部需要刷新授权:

                flush privileges;

2】防火墙禁止了3306端口

     查看服务器开启的端口

     vi /etc/sysconfig/iptables

     看一下里面的配置是否有3306端口

     没有的情况下:

     添加一条配置3306端口的策略

     -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

     重启防火墙

     service iptables restart

3】查看mysql配置

     修改MySQL的配置文件/etc/mysql/my.cnf,默认3306端口只允许本地访问

     注释条这行:

     #bind-address = 127.0.0.1

     或者改成     bind-address = 0.0.0.0

4】修改安全组策略

    上面的三条都不行,请看这一条。

     登录阿里云服务器

     在ESC服务器>网络和安全>安全组,点击你实例上的配置规则,如果没有3360的话,自己配置一条开放3306端口的规则。