无法远程连接服务器上的mysql
前言
使用mysql管理工具连接服务器上的mysql,显示连接被拒绝,但是在服务器上是可以登录mysql的。
无法远程连接通常以下几种情况:
首先,
关闭mysql。
service mysqld stop
1.0 没有授权(这里介绍三种的方法)
1.1 查看授权
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+-----------------------+
| host |
+-----------------------+
| % |
| 127.0.0.1 |
+-----------------------+
host下面的字段:
% 代表任何主机都可以连接
127.0.0.1 表示该用户只能通过这个服务器地址连接
1.2 如果没有授权,修改授权
授权任何地址都可以连接
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";
1.3 授权一个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.0 防火墙禁止了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.0 查看mysql配置
修改MySQL的配置文件/etc/mysql/my.cnf,默认3306端口只允许本地访问
注释条这行:
#bind-address = 127.0.0.1
或者改成 bind-address = 0.0.0.0
4.0 修改安全组策略
上面的三条都不行,请看这一条。
登录阿里云服务器
在ESC服务器>网络和安全>安全组,点击你实例上的配置规则,如果没有3360的话,自己配置一条开放
3306端口的规则。