linux centos7 开启 mysql 3306 端口 外网访问 的实践
第〇步:思路
3306 端口能否被外网访问,主要要考虑:
(1)mysql的3306 端口是否开启?是否没有更改端口号?
(2)mysql 是否允许3306 被外网访问?
(3)linux 是否已经开启了 3306 端口(通常情况下mysql能够启动就不用考虑这个)
(4)linux 是否对外网放行 3305
(5)云服务器厂商是否对3306进行了限制
我们用到的工具:
(1)nmap: 模拟外网扫描端口开启情况
(2)netstat: 扫描linux开启了哪些端口
(3)firewall:防火墙
第一步:检测
(1)nmap 外网ip
当我的3306 被外网扫描不到时,它是这样显示:
Starting Nmap 6.40 ( http://nmap.org ) at 2019-06-29 10:01 CST
Nmap scan report for (外网ip)
Host is up (0.00041s latency).
Not shown: 994 filtered ports
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp open ftp
22/tcp open ssh
80/tcp open http
888/tcp open accessbuilder
8888/tcp open sun-answerbook
我们看到,其中并没有 3306 端口
当我最终完成时,它是这样:
Starting Nmap 6.40 ( http://nmap.org ) at 2019-06-29 10:01 CST
Nmap scan report for (外网ip)
Host is up (0.00040s latency).
Not shown: 993 filtered ports
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp open ftp
22/tcp open ssh
80/tcp open http
888/tcp open accessbuilder
3306/tcp open mysql
8888/tcp open sun-answerbook
大家看到,这样才算成功。
(2)netstat -tlunp 检测linux是否开启了3306端口
通查情况下,我们能够访问mysql ,3306 端口就是开启的了,我们可以用 netstat -tlunp 查看,此处我们需要关注的点是,3306 是否是设置被所有ip访问。如下 0.0.0.0:* 才是成功的,如果不是,就要去mysql配置。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 17209/mongod
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 32319/mysqld
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 16798/redis-server
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5735/nginx: master
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 26958/pure-ftpd (SE
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3408/sshd
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 20645/python
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 5735/nginx: master
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 18723/master
tcp6 0 0 :::21 :::* LISTEN 26958/pure-ftpd (SE
tcp6 0 0 ::1:25 :::* LISTEN 18723/master
udp 0 0 172.16.0.6:123 0.0.0.0:* 4849/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 4849/ntpd
udp6 0 0 fe80::5054:ff:fef5::123 :::* 4849/ntpd
udp6 0 0 ::1:123 :::* 4849/ntpd
(3)检测防火墙配置 firewall-cmd --list-ports
如果(1)的nmap通过了,就没必要检测这个了, 因为肯定是开了的。
当我们用(1)的nmap检测不到3306端口,(2)能够看到时,就要看是不是防火墙的锅。
首先重启防火墙
systemctl restart firewalld.service
firewall-cmd --list-ports
20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 888/tcp
这个结果表示,我们的3306 端口没有开启。如果开启了,会是这样
0/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 888/tcp 3306/tcp
第二部分:设置
根据情况选择下列设置,当然你也可以挨个都试一下
(1)mysql 放行端口 (可以通过netstat -tlunp 查看,是0.0.0.0的话就对了 )
打开mysql的my.cnf, 查看bind-address 选项,设为0,0.0.0
(2)云服务器厂商放行端口:自动百度,比如说 阿里云 3306
(3)防火墙放行
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld.service
firewall-cmd --list-ports
总之,nmap可以访问出3306,端口问题就成功了
第三部分:外网还是连不上mysql怎么办?
是不是你登陆的mysql账号不允许?
(1)root 登陆: mysql -u root -p
(2)use mysql;
(3) select user,host from user;
(4)update user set host=‘%’ where user='账户名'
(5)flush privileges;
linux centos7 开启 mysql 3306 端口 外网访问 的实践的更多相关文章
- mysql 开放端口 外网访问
mysql 开放端口 外网访问 作者: moyixi 时间: April 24, 2018 分类: 默认分类,数据库,mysql 前提: 如果是云服务器,请先把安全组件相应的开发 查看服务器的端口33 ...
- Linux CentOS7 开启80,443端口外网访问权限
一.查看系统防火墙状态(如果返回 running 代表防火墙启动正常) firewall-cmd --state 二.开启端口外网访问 1.添加端口 返回 success 代表成功(--permane ...
- linux服务器安装mysql并配置外网访问
linux服务器安装mysql并配置外网访问 更新系统,如果不运行该命令,直接安装mysql,会出现"有几个软件包无法下载 sudo apt-get update 安装mysql sudo ...
- 腾讯云linux系统部署项目无法通过外网访问
最近尝试使用了一下腾讯去的linux系统服务器,但是却遇到各种问题,下面记录的问题是项目部署完成后却无法通过外网访问. 服务器:腾讯云 系统 :CentOS 8.0 64位 处理思路:通过度娘百般摸索 ...
- mysql设置允许外网访问
1.设置mysql服务允许外网访问 修改mysql的配置文件,有的是my.ini,有的是my.cnf[linux],找到bind-address变量,这个值默认是127.0.0.1,设置为0.0.0. ...
- mysql 设置服务器的MySQL允许远程访问/外网访问
设置服务器的MySQL允许远程访问/外网访问 https://blog.csdn.net/weixin_34232363/article/details/85889037
- Ubuntu 16.04下开启Mysql 3306端口远程访问
原文地址:传送门 0. 前言 网上看到很多开启Mysql远程访问端口,修改的配置文件我都没有找到. 特意查看了我的Linux版本 $ sudo lsb_release -a 显示如下: Distrib ...
- ubuntu mysql 安装和外网访问配置
1.输入 sudo apt-get install mysql-server 安装过程中会让你输入密码,这个密码是root的密码. 安装完毕后,就可以正常使用了,如果你需要外网用户能够连接继续下面的步 ...
- Ubuntu下MySQL配置为外网访问
Ububtu安装MySQL后默认外网无法连接,但是很多时候我们想要在外网访问方便管理.在这里,简单叙述一下自己在配置过程中的操作,步骤如下: 以root身份登入mysql mysql -u root ...
随机推荐
- 查看DOM对象的style样式,attributes属性,children
// 在不同的浏览器查看各种属性,样式.如果不知道哪个对象的属性样式怎么写,可以在控制台输出 style attributes// 所有的属性样式都会出现// 此外还可以检查某个属性在不同浏览器是否 ...
- LeetCode按照解题方法分类题目
解题方法分类 1. 滑动窗口. 2. 双指针. 3. 快慢指针. 4. 区间合并. 5. 循环排序. 6. 原地反转链表. 7. 树上的BFS. 8. 树上的DFS. 9. 双堆. 10. 子集. 1 ...
- mybatis-传多个参数
第一种方案:下标传参 DAO层的函数方法 Public User selectUser(String name, String area); 对应的Mapper.xml <select id=& ...
- 学到了林海峰,武沛齐讲的Day31 完 TCP UDP
多用户链接 验证等.学习了思路.还是很有用的..
- MongoDB空间分配
Mongodb占据的磁盘空间比MySQL大得多,可以理解文档数据如Json这种格式,存在许多冗余数据,但空间占用大得不正常,甚至是传统数据库的三四倍,不太契合工程实践,应该有改善的余地. 查阅了一些资 ...
- ROS文件系统级
ROS的安装就不介绍了,官方教程是最好的:点击打开链接 ROS是机器人操作系统,它应该有自己的工程结构,Linux系统的文件系统如下: 而ROS的文件系统级如下: 接下来逐一介绍它们: 1. catk ...
- 列出python中可变数据类型和不可变数据类型,并简述原理
可变类型(mutable):变量进行append.+=等这种操作后 == 改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即 ...
- redis消息提醒设计方案细则
----需求明细: 现有多个角色,角色间需要交互,内容分为申请,审核通过,拒绝,解除合作.每个角色进入自己后台显示查看其他角色的未读消息个数,点击进入显示所有发送来的内容.最开始只存储未读个数,并不知 ...
- cas系列-自定义异常提示(五)
cas对于异常提示可以支持多语言,默认是英语,具体文件格式大同小异.这里以cas5.x版本为例. 官方推荐使用overlay方式部署,这样你只需要关注你自定义的配置即可. 获取自定义配置文件方式: 执 ...
- Highcharts 的使用(各种统计图)(难点:绑定数据)
1.我们先打开 官方下载的 文件包 打开 index.htm 页面 里面有非常多的 统计图. 我是用的是3D charts 中的 3D column 也就是 3D的柱状图. 选择一个 后 会有非常棒的 ...