MySQL错误:Can't connect to MySQL server (10060)远程连接数据库失败

当远程连接MySQL数据库的时候显示Can't connect to MySQL server (10060),我们从以下几个方面入手,找出错误的原因:

1.网络不通。

检查能不能ping通。

2.防火墙设置。

防火墙是否放过mysql的进程,是否屏蔽了mysql的3306端口。

3.mysql的账户设置。

mysql账户是否不允许远程连接。如果无法连接可以尝试以下方法:

 
 
  1. mysql -u root -p    //登录MySQL  
  2.  
  3. mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;     //任何远程主机都可以访问数据库  
  4.  
  5. mysql> FLUSH PRIVILEGES;    //需要输入次命令使修改生效  
  6.  
  7. mysql> EXIT    //退出 

也可以通过修改表来实现远程:

 
 
  1. mysql -u root -p  
  2.  
  3. mysql> use mysql;  
  4.  
  5. mysql> update user set host = '%' where user = 'root';  
  6.  
  7. mysql> select host, user from user; 

其实错误的原因也不外乎以上几个方面,相信按照上面的思路找出原因,定能将问题解决掉。如果想了解更多MySQL数据库的问题,请参考:http://database.51cto.com/mysql/,谢谢大家!

这次是防火墙设置出现了问题,将端口3306关闭了,可以开启特定的接口,如下:

查看状态:

iptables -L -n

下面添加对特定端口开放的方法:

使用iptables开放如下端口

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

保存

/etc/rc.d/init.d/iptables save

重启服务

service iptables restart

查看需要打开的端口是否生效?

/etc/init.d/iptables status


### 解决方案 当遇到 `ERROR 2003 (HY000)` 错误,表示客户端尝试连接MySQL 数据库服务器失败。这可能是由于多种原因引起的,包括网络配置不当、防火墙阻止访问以及数据库用户权限不足等问题。 #### 检查 MySQL 配置文件 确认 MySQL 的配置文件 `/etc/my.cnf` 或者 `/etc/mysql/my.cnf` 中的 bind-address 设置是否正确。如果希望接受来自任意 IP 地址的请求,则应将此参数设为 `0.0.0.0` 而不是仅限于本地回环接口 `127.0.0.1`[^1]。 ```bash # 修改 my.cnf 文件中的 bind-address 参数 bind-address = 0.0.0.0 ``` #### 开放必要的端口 确保目标机器上运行着 MySQL 服务,并且该服务监听的是外部可到达的网卡而不是仅仅局限于 localhost 接口。另外还需要开放相应的 TCP/IP 端口(通常是 3306),可以通过调整操作系统自带的防火墙规则实现这一点: 对于 CentOS/RHEL 类系统来说,可以执行如下命令来开启并保存更改后的状态: ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload ``` #### 用户授权管理 创建具有适当权限的新用户或将现有用户的主机名从 `'localhost'` 更改为更广泛的模式如 `'%'`, 表示允许所有IP地址进行连接;也可以指定特定子网内的设备作为合法来源。操作方式如下所示: ```sql CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%'; FLUSH PRIVILEGES; ``` 以上 SQL 命令会授予新建立起来的身份完全控制权,实际应用当中应当依据业务需求分配最小化原则下的合适权限集。 #### 测试连通性 最后一步是在源主机上面利用 telnet 工具测试目的地上述所设定的服务端口能否正常通信,以此验证整个过程无误后再次尝试使用 mysql 客户端工具发起远程链接动作。 ```bash telnet target_ip_address 3306 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值