首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

3306端口不能用,内部访问可以,关闭防火墙也无效

如果你在使用 MySQL 数据库时遇到 3306 端口不能访问的问题,即使在关闭防火墙的情况下,可能有多个原因导致这个问题。以下是一些常见的排查步骤和解决方法:

1. 确认 MySQL 服务是否在运行

首先,确保 MySQL 服务正在运行。

Windows

  1. 打开命令提示符(CMD)。
  2. 输入以下命令查看 MySQL 服务状态:sh复制net start
  3. 确认 MySQLMySQL80 服务在列表中。

Linux

  1. 打开终端。
  2. 输入以下命令查看 MySQL 服务状态:sh复制sudo systemctl status mysql
  3. 确认 MySQL 服务正在运行。

2. 检查 MySQL 配置文件

确保 MySQL 配置文件(通常是 my.cnfmy.ini)中没有绑定到 localhost127.0.0.1,而是绑定到 0.0.0.0 或特定的 IP 地址,以便允许外部访问。

配置文件路径

  • WindowsC:\ProgramData\MySQL\MySQL Server X.Y\my.ini
  • Linux/etc/mysql/my.cnf/etc/my.cnf

修改配置文件

找到并修改以下行:

代码语言:javascript
复制
# 绑定到所有 IP 地址
bind-address = 0.0.0.0

保存文件并重启 MySQL 服务。

重启 MySQL 服务

Windows
代码语言:javascript
复制
net stop mysql
net start mysql
Linux
代码语言:javascript
复制
sudo systemctl restart mysql

3. 检查端口监听

确保 MySQL 正在监听 3306 端口。

Windows

  1. 打开命令提示符(CMD)。
  2. 输入以下命令:sh复制netstat -an | find "3306"

Linux

  1. 打开终端。
  2. 输入以下命令:sh复制sudo netstat -tuln | grep 3306

你应该看到 MySQL 正在监听 3306 端口。

4. 检查防火墙和安全组设置

即使你关闭了本地防火墙,仍然需要检查云服务提供商的安全组设置(如果你在云上运行 MySQL),以及路由器或其他网络设备的防火墙设置。

云服务提供商

如果你在 AWS、Azure、Google Cloud 等云服务上运行 MySQL,确保安全组或防火墙规则允许 3306 端口的入站流量。

路由器或网络设备

检查路由器或其他网络设备的防火墙设置,确保 3306 端口没有被阻止。

5. 检查 MySQL 用户权限

确保 MySQL 用户有权限从外部主机连接。

  1. 登录到 MySQL:mysql -u root -p
  2. 检查用户权限:SELECT user, host FROM mysql.user;
  3. 如果用户只允许从 localhost 连接,修改权限:GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES;

6. 检查 SELinux(仅适用于 Linux)

如果你在使用 SELinux,确保它没有阻止 MySQL 的外部连接。

  1. 检查 SELinux 状态:sestatus
  2. 如果 SELinux 处于启用状态,允许 MySQL 进行网络连接:sudo setsebool -P mysql_connect_any 1

7. 检查网络连接

确保从客户端机器到 MySQL 服务器的网络连接是正常的。

  1. 使用 ping 命令检查网络连通性:ping your_mysql_server_ip
  2. 使用 telnetnc 命令检查 3306 端口的连通性:telnet your_mysql_server_ip 3306 或nc -zv your_mysql_server_ip 3306
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

华为防火墙配置端口映射,并且在内网能用外网的IP和端口访问

小型企业,一般就在路由器和防火墙之间二选一,不太会同时上两个设备,在他们眼里,防火墙和路由器都一样,无非就是用来上网,这么认为其实的确无可厚非,因为现在的产品,边界越来越模糊,小型网络里面,用户要求不高...,为安全起见,最好不要和内网真正使用的端口相同;私网接口:内网服务器真正使用的服务端口 配置完成后,可以在外网,用telnet命令检测,映射是否生效: telnet 电信运营商IP 公网端口号 如果有反应...配置特殊的NAT,使内网计算机能通过公网的IP地址和端口访问内网的服务器 本以为工作可以暂时告一段落,但是客户说ERP系统无法登录,定向开发的ERP系统,看到任何配置文件,打给客服,只是说开放一个端口即可...这样配置以后,防火墙就会把内网计算机访问这台服务器请求,转发到公网的IP和端口了; 拓展知识:程序代码中绑定IP并不是什么好事,如何避免切换IP的烦琐?...其实要解决这个问题,不难,就是在代码中抛弃IP地址,改为绑定域名:在外网,只要在域名注册商的DNS管理后台,写一条A记录,指向电信运营商给的公网IP地址就可以了;同样道理,在内网,就在自己的DNS服务器上

5.2K31

CentOS 7下用firewall-cmd控制端口端口转发详解

端口 firewall-cmd --list-services  # 查看开放的服务 firewall-cmd --add-port=3306/tcp # 开放通过tcp访问3306 firewall-cmd...--remove-masquerade# 禁止防火墙伪装IP 四、端口转发 端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。...转发的目的如果指定ip的话就默认为本机,如果指定了ip却没指定端口,则默认使用来源端口。...如果配置好端口转发之后不能用可以检查下面两个问题: 比如我将80端口转发至8080端口,首先检查本地的80端口和目标的8080端口是否开放监听了 其次检查是否允许伪装IP,没允许的话要开启伪装IP ?...,就可以防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙端口转发,将流量转发过去。

1.8K20
  • Firewall防火墙配置-2

    # 你可以关闭目前还不熟悉的FirewallD防火墙,而使用iptables,命令如下: systemctl stop firewalld systemctl disable firewalld yum...# 查看防火墙,添加的端口可以看到 firewall-cmd --list-all 直接模式 # FirewallD包括一种直接模式,使用它可以完成一些工作,例如打开TCP协议的9999端口 firewall-cmd...端口转发 端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。...如果配置好端口转发之后不能用可以检查下面两个问题: 比如我将 80 端口转发至 8080 端口,首先检查本地的 80 端口和目标的 8080 端口是否开放监听了 其次检查是否允许伪装 IP,没允许的话要开启伪装...=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口 当我们想把某个端口隐藏起来的时候,就可以防火墙上阻止那个端口访问

    68020

    【linux命令讲解大全】137.firewall-cmd:Linux上新用的防火墙软件

    # 你可以关闭目前还不熟悉的FirewallD防火墙,而使用iptables,命令如下: systemctl stop firewalld systemctl disable firewalld...--reload # 查看防火墙,添加的端口可以看到 firewall-cmd --list-all ## 直接模式 # FirewallD包括一种直接模式,使用它可以完成一些工作,例如打开TCP...# 开放通过tcp访问3306 firewall-cmd --remove-port=80tcp # 阻止通过tcp访问3306 firewall-cmd --add-port=233/udp...端口转发 端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。...=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口 当我们想把某个端口隐藏起来的时候,就可以防火墙上阻止那个端口访问

    14010

    Linux firewall-cmd命令

    # 你可以关闭目前还不熟悉的FirewallD防火墙,而使用iptables,命令如下: systemctl stop firewalld systemctl disable firewalld...--reload # 查看防火墙,添加的端口可以看到 firewall-cmd --list-all 2.5 直接模式 # FirewallD包括一种直接模式,使用它可以完成一些工作,例如打开...==2.9 == 端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。...如果配置好端口转发之后不能用可以检查下面两个问题: 比如我将 80 端口转发至 8080 端口,首先检查本地的 80 端口和目标的 8080 端口是否开放监听了 其次检查是否允许伪装 IP,没允许的话要开启伪装...toport=8080 1)当我们想把某个端口隐藏起来的时候,就可以防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火 墙的端口转发,将流量转发过去。

    1.7K30

    Centos7端口转发采用firewall-cmd让80端口转发至8080端口

    firewalld 停止:# systemctl stop firewalld 使能:# systemctl enable firewalld (可让防火墙开机自启动,防火墙默认开机启动的,需手动启动...:来看看具体的操作 1、首先要明白,firewall-cmd是Centos7系统的网络防火墙,既然是防火墙它就有能力确定外面想访问内部端口的权限,我之前在阿里云Centos7.3上安装了mysql,它的内部端口号是...3306,但是我用sql的图形化界面工具通过公网IP始终连接不了,后来找到了原因,就是系统打开了firewall之后没有开放3306端口的外界访问权限,所以这点非常重要,需要用:firewall-cmd...--zone=public --list-ports查看当前linux系统开放的端口号,可以用netstat -tunlp 查看当前linux系统正在监听的端口号,就知道自己想要的liunx系统端口号是否已经打开..., --permanent参数表示永久的意思,这样就不必每次启动防火墙的时候配置,tcp代表你要开放的端口号的网络协议,可以是udp的。

    3.1K30

    LINUX下如何修改IPTABLES开启80端口

    inux下如何修改iptables开启80端口 最近在做本地服务器的环境,发现网站localhost能正常访问,用ip访问访问不了,经常使用CentOS的朋友,可能会遇到和我一样的问题。...开启了防火墙导致80端口无法访问,刚开始学习centos的朋友可以参考下。 经常使用CentOS的朋友,可能会遇到和我一样的问题。...最近在Linux CentOS防火墙下安装配置 ORACLE   数据库的时候,总显示因为网络端口而导致的EM安装失败,遂打算先关闭一下CentOS防火墙。...这里应该可以不重启计算机:  /etc/init.d/iptables restart  CentOS防火墙关闭关闭其服务即可:  查看CentOS防火墙信息:/etc/init.d/iptables...j ACCEPT   * 关闭指令 iptables -D INPUT -p tcp -s xxx.xxx.xxx.xxx --dport 3306 -j ACCEPT

    6.2K30

    【已解决】Operation timed out 问题

    图片在这里补充一句,不是tcp/tcp6协议的原因,tcp6是向下兼容tcp协议的,:::3306和0.0.0.0:80没有关系,出现在列表里就可以表示端口已经启动监听服务了。...查看阿里云安全组2.查看服务器的安全组配置是否正确,3306端口存在,为了打消疑虑,出方向和入方向都把3306添加到了安全组里,尝试后还是不通。...6、如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。(这一步不需要,谢谢。)...然后继续执行以下进行防火墙重启:systemctl restart firewalld总结但我遇到的一个问题非常诡异,当我重新打开防火墙的时候,NaviCat客户端可以正常连接,但是浏览器不能正常访问了...,(我猜测开启防火墙需要把80端口加入到防火墙)后来我又关闭防火墙,使用安全组策略来管理端口,剩下的留着后续有时间再进行优化。

    1.2K41

    Doker部署前后端分离项目

    ** # 1.4 启动 Docker 启动 docker 前,一定要关闭防火墙 (这里如果使用的是云服务器可以不用设置) # 关闭 systemctl stop firewalld # 禁止开机启动防火墙...设置密码等 实际原来的 root 仍然有效,只不过只能 localhost 机器能用(在 MySQL 服务器上的 mysql 命令直连时可以使用)Navicat 不能用。 # 1....(2) 在 application-druid.yml 中,修改 mysql 的信息,url 的中间填写访问 mysql 的 ip: 端口号,例如:114.115.164.15:3306;username...尝试运行后端项目可以通过 InteliJ IDEA 或者 eclipse 软件来运行这个 java 后端项目,前提是你运行的本机上应该具备一定的环境,jdk 至少是 1.8,以及本地 8080 端口(...其他的例如 mysql,redis 可以直接通过服务器 ip + 端口号远程访问,不需要在本机上配置。 出现下方图片所示 LOGO 表示启动成功,可以开始打包后端代码。

    61610

    linux防火墙端口设置_centos怎么关闭防火墙端口

    Ubuntu18: 测试:默认拒绝大部分端口 提示:端口修改后立即生效 sudo ufw status # 查看端口状态 sudo ufw disable # 关闭防火墙 sudo ufw enable...# 打开防火墙 sudo ufw allow 3306 # 允许tcp/udp访问端口 sudo ufw deny 3306 # 禁止端口或服务访问 sudo ufw delete allow 3306...# 删除规则(或deny 3306) CentOS7: 测试:默认拒绝大部分端口 提示:端口修改后要重启防火墙生效 systemctl status firewalld # 防火墙服务运行全部状态(...centos7 防火墙 开启端口 并测试 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    4.9K10

    物理架构&网络规划

    一个私有网络规划2个子网 [image.png] 网络开放策略 网络开放规则如下: 网络 开发/测试 生产环境 互联网 开发/测试 - 关闭 防火墙WAF开通进入 生产环境 关闭 - 防火墙WAF开通进入...redis 网络安全组 (只对需要访问的cvm子网络开放 6379) tdsql 网络安全组(只对需要访问的cvm子网络开放 3306) elasticsearch 网络安全组(只对需要访问的cvm子网络开放...9200) mongodb 网络安全组 (只对需要访问的cvm子网络开放 27017) tdmq 网络安全组(只对需要访问的cvm子网络开放协议端口 ) 网关网络安全组(对web防火墙WAF回源IP开放...80和443) 业务cvm安全组(对网关开放80,对堡垒机开放远程访问端口) 堡垒机安全组(按需开放web管理、认证、协议端口) web应用防火墙WAF 使用WAF作为互联网入口,waf支持Saas型和负载均衡型...物理架构图 物理架构图如下,如果选购的WAF是Saas型,那么外网负载均衡可以省略,防火墙直接解析网关服务器IP(注:网关网络策略安全组开放WAF回源IP)。 [image.png]

    4.3K52

    CentOS7安装MySQL(详解)

    1)、首先启动MySQL systemctl start mysqld.service 可以写成: systemctl start mysqld 2)、查看MySQL运行状态,运行状态如图: systemctl...刷新: flush privileges; 四、开启防火墙端口,CentOS为firewalld添加开放端口3306 首先要确保防火墙已开启: systemctl start firewalld 可以写成...开放3306端口 附录: 1、关闭端口 firewall-cmd --zone=public --remove-port=3306/tcp --permanent #关闭3306端口 firewall-cmd...、关闭防火墙 如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估 systemctl stop firewalld.service 4、查看防火墙状态 firewall-cmd --state...--reload 关闭端口关闭后需要要重启防火墙才生效) firewall-cmd --zone=public --remove-port=3338/tcp --permanent 9、开机启动防火墙

    9.8K11

    Linux云服务器部署项目

    IP,博主一般是直接配置’%‘所有IP都能访问,因为有时候开发需求会改变IP,如果指定IP的话就不方便,所以配置了’%’,一般情况下是将3306端口关闭,需要远程连接的时候再把3306端口打开,用完就关闭...,所以这里将它关闭,然后打开需要配置的端口 拒绝所有协议端口 点击第一条的编辑,将允许改为拒绝,然后保存 添加22端口3306端口 22端口是SSH远程连接用的,3306是数据库远程连接用的...,开放项目端口 防火墙相关 # 查看防火墙状态 systemctl status firewalld # 打开防火墙 systemctl start firewalld # 关闭防火墙 systemctl...配置域名访问(http) 一般来说,一个服务器不止跑一个服务(看自己需求,当然可以只跑一个),每个服务都是使用一个二级域名来进行访问,所以这里配置二级域名进行访问 添加解析 点进去后如下,可以看到这里是空的...这里添加后如下,记录值为自己服务器的公网IP 添加完成后就可以使用域名进行访问了,But,这样直接访问的话,访问的是服务器默认访问的80端口,而我们项目用的端口是8080,所以这里要将端口进行转发

    28510

    Linux强制释放占用端口以及Linux防火墙端口开放方法详解

    nmap 127.0.0.1 # 检查3306端口 netstat -anlp | grep 3306 # 检测3306接口 lsof -i:3306 linux释放占用端口解决办法 解决步骤如下...查询端口是否被占用 比如需要查询8080端口是否占用,可以下面命令 netstat -an | grep 8080 查询占用端口的进程 可以使用lsof命令查看 lsof -i:8080 可以使用...kill -9 19664 linux防火墙释放端口 Linux防火墙启动和关闭 下面介绍的防火墙是iptable,对于firewalld并不适用。...开启防火墙(重启后永久生效):chkconfig iptables on 关闭防火墙(重启后永久生效):chkconfig iptables off 开启防火墙(即时生效,重启后失效):service...可以使用下面命令查看: /etc/init.d/iptables status # 或者简写 iptables status iptables -L # 可以直接查看配置文件 vim /etc

    5.1K41

    mysql远程访问开启(Navicat Premium)

    数据库安全策略设置,我没用可以成功;我是用mysql5.56 和 mariadb 10.3.15 没问题; 唯一遇到的bug 工单也无用是在 检查iptables 和firewall 都关闭情况下无法远程访问...; 解决方案:数据库重启没用的,不用什么配置,开关防火墙就能远程;可能是某个防火墙进程没有真正关闭; 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop...开启任意IP远程访问权限 mysql -uroot -p use mysql; GRANT ALL PRIVILEGES ON *.* TO 'navmysql'@'%' IDENTIFIED BY '...入站 image.png 3.防火墙查看 systemctl status firewalld 如果开启了防火墙,加入端口; firewall-cmd --add-port=3306/tcp --...permanent systemctl restart firewalld.service 否则不用管端口,或者自主关闭防火墙,不用担心防火墙问题 systemctl stop firewalld.service

    2.3K20

    CentOS 7 开放防火墙端口 命令(转载)

    CentOS 7 开放防火墙端口 命令 最近公司新的server要求用CentOS7, 发现以前CentOS 6 系列中的 iptables 相关命令不能用了,查了下,发现Centos...使用方法如下: >>> 关闭防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service...#作用域 --add-port=80/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效 >>> 重启防火墙 firewall-cmd --reload...,使用iptables必须重新设置一下 1、直接关闭防火墙 systemctl stop firewalld.service #停止firewall systemctl disable...,如增加防火墙端口3306 vi /etc/sysconfig/iptables 增加规则 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306

    93810
    领券