前言
今天在工作时看到了一个问题,输入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。如下:
-
win+R调出运行窗口,并输入输入services.msc
-
找到自己的mysql服务项
-
启动。(这里只针对能启动的,不能启动的我没有遇到过。)
-
接下来重新开一个cmd窗口。输入mysql -u root -p 并输入密码。
如果是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服务。同时有一个mysql服务已经开启了。接下来我们看看这个启动的mysql的配置文件。
有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
直接通过命令访问3307的这个数据库。即mysql -P3307 -u root -p - 方法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。