狗儿

热爱的话就坚持吧~

0%

mysql外网连接

mysql永远是我大哥。

环境是阿里云centos7

为防止操作失误,请操作之前先做个快照,以便出错时可以回滚且保护重要数据。

1、开启MySQL的访问权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mysql -uroot -p123456
#将上面的root替换为你的mysql用户名,123456替换为你的密码

use mysql;
#选择mysql数据库,这个库里面存着MySQL的相关数据

show tables;
#显示user数据库的表

select user, host from user;
#显示user表中的user和host(user库下有user表,user表中又有user列)

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
#增添新用户root(@前),密码为root(by后)
#all表示全部权限,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等
#之后的*.*表示前面的权限的作用范围,*.*表示对全部数据库的全部表授权,*可以换成具体的数据库/表名,对于某一数据库的某一表授权为“数据库名.表名”。
#%代表允许任意的ip地址访问,可换成具体的ip,被单引号包裹即可
#idntified by 设置密码

flush privileges;
刷新缓存

2、查看端口是否占用

netstat -ntlp|grep 3306

img

tcp6 0:::3306表示监听任意ip地址,tcp6可向下兼容tcp的,所以不要惊异

(我没用到这一步)

3. 关闭防火墙或防火墙开启入站允许端口3306

(是centos系统自身的防火墙,不是阿里云的安全策略)

我就是卡在这一步,我放行了阿里云的端口,但是万万没想到centos自身也有防火墙,默认没开3306端口

1
2
3
#查看是否开启了防火墙,查看防火墙状态
ps -ef|grep firewall
firewall-cmd --state

img

1
2
#查看防火墙规则 
firewall-cmd --list-all

img

上图是我放行3306端口之后截的图,你们还没放行时查看应该不会有3306的显示

1
2
3
4
5
6
#添加3306规则
firewall-cmd --permanent --add-port=3306/tcp
#重启防火墙
service firewalld reload
#再次查看防火墙规则
firewall-cmd --list-all

最终结果如上图。

4、阿里云放行端口

轻量应用服务器->安全->防火墙->添加规则

img

注意直接选择MYSQL即可,不要选择自定义,然后选择TCP并填写3306,不要,直接选MYSQL就行。

5、在windows下测试是否服务器3306端口是否可以连接

telnet是windows的一项服务,默认是不开启的。

img

控制面板内找到程序和功能,在打开的新页面中点击启用或关闭windows功能,再在弹出的新窗口中找到并勾选Telnet Client,确定。

img

cmd下,键入telnet ip 3306,其中ip换成你的服务器ip

出来一行类似于5.6.44-log=:H:-mc)-€>>Z,jQ:k/CEqmysql_native_password的字符串,则端口确实可以链接,若几秒钟后依然停留在正在连接的界面,则说明未能连接,请重新对照之前的步骤仔细分析一下吧。

参考:

https://blog.csdn.net/mengzuchao/article/details/81463338

https://segmentfault.com/a/1190000010644317