解决远程连接MySQL报错:2003 – Can‘t connect to MySQL server on ‘X.X.X.X‘ (10060 “Unknown error“)问题

问题
先看报错:

2003 – Can’t connect to MySQL server on ‘X.X.X’ (10060 “Unknown error”)。

意思是服务器远程连接出错:未知错误。

解决方案:
遇到这个问题,首先想到的是权限不够。那咱就给它赋权。

首先登录MySQL数据库:mysql -u用户名 -p密码;

然后:use mysql;

进入数据库后我们先看看mysql user初始的权限表长啥样,输入sql语句:

select Host,User from user;

有结果:

+-----------------------+------+
| Host | User |
+-----------------------+------+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | |
| localhost | root |
| localhost.localdomain | |
| localhost.localdomain | root |
+-----------------------+------+
6 rows in set (0.00 sec)

看到这里就比较明了了,由于我们是远程连接访问mysql,需要开放主机权限。这里我们将127.0.0.1改为%(%表示允许任意的host访问)。输入mysql语句:

UPDATE user SET Host = '%' WHERE Host = '127.0.0.1' AND User = 'root';
flush privileges;

回头看看有没有改成功:

+-----------------------+------+
| Host | User |
+-----------------------+------+
| % | root |
| ::1 | root |
| localhost | |
| localhost | root |
| localhost.localdomain | |
| localhost.localdomain | root |
+-----------------------+------+
6 rows in set (0.00 sec)


好了,权限修改成功了。我们就可以尝试连接数据库了。

是的,你没看错,它还是不成功,问题出在哪呢。想了好久,突然就在一念之间:会不会是防火墙的问题?

于是我尝试关闭防火墙,然后连接,来不及反应,很快呀,直接连接成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在是连接成功了,但是我关闭防火墙之后又连不了了,咱也并不能永久关闭防火墙吧。

于是我查了查,应该是端口没有开放,导致的连接失败。输入命令:

systemctl start firewalld.service
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

后面就可以正常连接了。

总结
连接失败是所用主机没有访问远程服务器的权限,这里可以通过修改权限解决。但是在使用MySQL服务前需要开放端口号3306,或者直接关闭防火墙。

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/9209

(0)
郭靖的头像郭靖
上一篇 2023年7月27日 下午4:02
下一篇 2023年7月28日 下午4:43

相关推荐

  • MYSQL中的COLLATE是什么?

    在mysql中执行show create table <tablename>指令,可以看到一张表的建表语句,example如下: 大部分字段我们都能看懂,但是今天要讨论的是COLLATE关键字。这个值后面对应的utf8_unicode_ci是什么意思呢?面试的时候用这个题目考一考DBA,应该可以难倒一大部分人。 COLLATE是用来做什么的? 使用ph…

    2022年8月28日
    1.5K00
  • 如何解决生产环境MySQL的死锁问题

    生产问题 在生产环境中发现我们数据库出现了一个异常,异常堆栈信息如下: 从堆栈信息可以很容易知道死锁问题。但是这个更新语句为什么会出现死锁呢? 问题原因 死锁产生的原因有四个分别是: 互斥 循环等待 不可剥夺 请求与保持 只要产生死锁以上四个条件比然满足,因此考虑这个SQL语句是否产生了这四个死锁条件。 分析: 由于我们使用的是云数据库,因此可以通过云数据库…

    2022年8月21日
    1.3K00
  • count(1)、count(*)与count(列名)的执行区别

    在工作中遇到count(*)、count(1)、count(col) ,可能会让你分不清楚,都是计数,干嘛这么搞这么多东西。 count 作用 COUNT(expression):返回查询的记录总数,expression 参数是一个字段或者 * 号。 测试 MySQL版本:5.7.29 创建一张用户表,并插入一百万条数据,其中gender字段有五十万行是为n…

    2023年1月12日
    1.4K00
  • MYSQL分区

    一:概念 MySQL从5.1版本开始支持分区的功能。分区是指根据一定的规则,数据库把一个表分解成多个更小的、更容易管理的部分。就访问数据库的应用而言,逻辑上只有一个表或一个索引,但是实际上这个表可能由数10个物理分区对象组成,每个分区都是一个独立的对象,可以独自处理,可以作为表的一部分进行处理。分区对应用来说是完全透明的,不影响应用的业务逻辑。 二:分区优点…

    2024年6月3日
    1.4K00
  • docker容器无法访问宿主机数据库

    今天用docker部署一个web服务时遇到总是连不上宿主机mysql数据库的问题,报SQLSTATE[HY000] [2002] Connection refused,经过测试,宿主机用相同配置可以连上,登入docker容器内就连不上,初步判断容器内通过localhost或127.0.0.1是连不上宿主机的。具体原因和解决方法如下: 原因: 今天用docke…

    2023年8月9日
    1.9K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信