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;

 

原文地址:https://www.cnblogs.com/chenyansu/p/11106029.html

时间: 2024-10-12 23:23:17

linux centos7 开启 mysql 3306 端口 外网访问 的实践的相关文章

Linux CentOS7 开启80,443端口外网访问权限

一.查看系统防火墙状态(如果返回 running 代表防火墙启动正常) 1 firewall-cmd --state 二.开启端口外网访问 1.添加端口 返回 success 代表成功(--permanent永久生效,没有此参数重启后失效) 1 firewall-cmd --zone=public --add-port=80/tcp --permanent 2 firewall-cmd --zone=public --add-port=443/tcp --permanent 3 4 开放多个端口

Mysql设置允许外网访问(图文)

Mysql设置允许外网访问(图文) 1.打开mysql.exe(MySQL Command Line Client),输入密码 2.输入:use mysql; 3.查询host输入: select user,host from user; 4.创建host(如果有"%"这个host值,则跳过这一步) 如果没有"%"这个host值,就执行下面这两句:mysql> update user set host='%' where user='root';mysql&g

在ubuntu服务器上安装mysql并配置外网访问

1.更新系统,如果不运行该命令,直接安装mysql,会出现"有几个软件包无法下载 sudo apt-get update 2.安装mysql sudo apt-get install mysql-server mysql-client 安装时候需要输入密码,密码是root用户的密码 3.安装成功后可以通过下面的命令测试是否安装成功: sudo netstat -tap | grep mysql 出现如下信息证明安装成功: 4.登录mysql,进行授权 mysql -u root -p 输入密码

centos7 打开mysql 3306端口并 设置外部访问

mysql安装后默认是localhost访问,如果需要外部访问可以设置一个新的账号把host改为%,意味着所有ip均可以访问 grant all privileges on *.* to 'outUser'@'%' identified by '12' with grant option 然后 flush privileges; 就可以使用outUser账户密码12来外部访问,有的时候无法访问需要打开防火墙开放端口 centos 7 中使用的是firewall-cmd命令 # firewall-

centOS开启apache无法让外网访问:开启80端口

iptables -I INPUT 1 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT service iptables save service iptables restart

Mysql设置允许外网访问

1.打开mysql.exe(MySQL Command Line Client),输入密码 2.输入:use mysql; 3.查询host输入: select user,host from user; 4.创建host(如果有"%"这个host值,则跳过这一步) 如果没有"%"这个host值,就执行下面这两句:mysql> update user set host='%' where user='root';mysql> flush privilege

ubuntu下mysql安装提供外网访问

修改配置文件 1. sudo apt-get install mysql-server #安装mysql服务器 2. sudo apt-get install  mysql-client #安装mysql客户端 3. sudo vi /etc/mysql/my.cnf #打开配置文件 注释 #bind-address = 127.0.0.1 4. sudo  /etc/init.d/mysql restart # 重启mysql 就可以连接 修改表配置 [email protected]:~$

怎样设置才能允许外网访问MySQL

设置mysql服务允许外网访问,修改mysql的配置文件,有的是my.ini,有的是my.cnf[linux]. 找到禅道的mysql配置文件路径: /opt/zbox/etc/mysql 1:设置mysql的配置文件     /etc/mysql/my.cnf     找到 bind-address  =127.0.0.1  将其注释掉://作用是使得不再只允许本地访问:  重启mysql:/etc/init.d/mysql restart; 2:登录mysql数据库:mysql -u roo

外网访问内网MySQL数据库

外网访问内网MySQL数据库 本地安装了MySQL数据库,只能在局域网内访问,怎样从外网也能访问本地MySQL数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动MySQL数据库 默认安装的MySQL数据库端口是3306. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access key信息 在holer官网上申请专