当遇到 MySQL 登录时,报错:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using
password: YES)
的一种应对方法,
这个时候需要先去查看MySQL服务是否出现了问题,
打开Windows服务窗口,在其中找到关于MySQL的服务,
可以看到,这里存在2个MySQL服务,正在运行的MySQL服务是 MySQL
,另一个MySQL服务 MySQL80
服务处于停止状态,
因为当前登录 MySQL 的时候遇到了错误提示,这说明当前“正在运行”的MySQL服务一定是错误的,所以先关闭它,这时再尝试登录MySQL,会出现新的错误提示:
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)
这表示,当前没有MySQL服务是运行的,所以无法连接到MySQL数据库,
接下来,启动另一个MySQL服务 MySQL80
,
可以看到,名为MySQL
的MySQL服务已被关闭停止,而叫MySQL80
的MySQL服务是正在运行的,
此时再去登录MySQL数据库,顺利连接进入,没有错误。
其中的原因是,曾经安装了多个MySQL数据库,每个数据库都有自己对应的MySQL服务,也就是存在多个MySQL服务,启动的MySQL服务如果不是你要登录的MySQL数据库对应的MySQL服务,登录时就会报错。还有一种情况,你只安装了一个MySQL数据库,之前的调试和登录都没问题,但用了几天发现登录时报错,这种情况下,是你安装MySQL数据库的时候,系统分配的MySQL服务的服务名称
不是MySQL
而是其他的名字,比如,下图中两个MySQL服务一个名字叫MySQL80,一个叫MySQL,
在安装MySQL数据库的时候,系统给分配的MySQL服务名称是:MySQL80,数据库是可以正常连接和使用的,但是该数据库用了大概一个星期左右的时候,MySQL又生成了一个新的服务,服务名叫:MySQL,这时新生成的名叫MySQL的服务被MySQL设置成正在运行状态,同时关闭停止了原来一直正常运行的MySQL80服务,这时再登录MySQL数据库就会报错。
总结:当遇到了> ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using
password: YES) 这种错误的时候,第一时间去检查MySQL服务,看看正在运行的MySQL服务是不是自己要登录的MySQL数据库所对应的MySQL服务,如果不知道对应关系,就挨个关停,直到试出自己要登录的MySQL数据库应该对应哪个MySQL服务。
postscript:
其实,通过存在的MySQL服务的属性中可以确定哪个服务是你要登录数据库的对应MySQL服务,MySQL服务属性中可执行文件的路径里如果有--defaults-file=
,就说明这个服务是你要登陆的MySQL数据库的正确服务,启动它同时停止其他的MySQL服务就对了。
September12th2024Wednesday