mysql报错Can‘t connect to MySQL server on ‘localhost‘ (10061)?看看这个

前言

今天在工作时看到了一个问题,输入mysql -u root -p 再输入密码后,报错Can’t connect to MySQL server on ‘localhost’ (10061)。虽然是很简单的问题,但是因为报错提示不是特别的明白,所以稍微浪费了一点时间。

问题及解决方案

在探究这个问题如何解决前,先来说说这个问题是什么。报错的信息是无法连接上mysql数据库。
首先我们可以肯定,既然mysql -u root -p能正常使用并显示出mysql的信息,那就可以说明环境变量是配置过且正确的。

可能的问题一

我们需要考虑一下,mysql的服务是否已经启动了。windows系统下,win+R键调出运行窗口。输入services.msc,在服务项里面找到自己的mysql。如下:

  1. win+R调出运行窗口,并输入输入services.msc
    mysql报错Can‘t connect to MySQL server on ‘localhost‘ (10061)?看看这个_第1张图片

  2. 找到自己的mysql服务项
    mysql报错Can‘t connect to MySQL server on ‘localhost‘ (10061)?看看这个_第2张图片

  3. 启动。(这里只针对能启动的,不能启动的我没有遇到过。)
    mysql报错Can‘t connect to MySQL server on ‘localhost‘ (10061)?看看这个_第3张图片

  4. 接下来重新开一个cmd窗口。输入mysql -u root -p 并输入密码。
    mysql报错Can‘t connect to MySQL server on ‘localhost‘ (10061)?看看这个_第4张图片

如果是linux,则输入命令net stop mysql先关闭,再输入命令net start mysql开启mysql服务。

可能发生的问题二

当然了,不排除有特殊的情况。今天遇上的情况和上面的情况不同:服务项开启了,但是依然无法正常访问。

先说一下结论:他这里有多个mysql,且mysql的端口号不同,启动的mysql所用端口为3307。正常使用mysql -u root -p的情况下,会无法正常访问。因为这条语句稍微往完整了写是mysql -h localhost -P 3306 -u root -p,即访问的是本地的3306的mysql。因此如果是这种问题,登录mysql的语句要么写为
mysql -P 对应的端口 -u root -p
我们先来看看这个问题中,他的服务项是什么样的。
mysql报错Can‘t connect to MySQL server on ‘localhost‘ (10061)?看看这个_第5张图片
我们可以看到,他有多个mysql服务。同时有一个mysql服务已经开启了。接下来我们看看这个启动的mysql的配置文件。
mysql报错Can‘t connect to MySQL server on ‘localhost‘ (10061)?看看这个_第6张图片
有my.ini文件可以看出,他的mysql所用的端口是3307。结合到mysql登录的全写是mysql -h localhost -P 3306 -u root -p来看,没有开启的3306的mysql,自然会报错Can’t connect to MySQL server on ‘localhost’ (10061)。
那么这种情况我们如何解决呢?

  1. 方法1
    直接通过命令访问3307的这个数据库。即mysql -P3307 -u root -p
  2. 方法2
    修改这个mysql所用的端口号为3306。然后mysql -u root -p

补充

这里顺带说一下mysql -u root -p -h -P几个参数的意思:
-u是用户名
-p是用户名密码
-h是访问的ip地址,本地为127.0.0.1或localhost(意思一样),如果是远程库,则录入对应的ip地址即可。
-P是访问的mysql服务的端口号,默认为3306。

你可能感兴趣的:(mysql,mysql)