刚入门学习MySQL,本来一切操作都挺正常的,之后想用Navicat连接MySQL时,根据****里面某篇文章操作,结果开始了解决完一个bug又出现另一个bug的绝望循环。一开始是报 Access denied for user ‘root’@‘localhost’ (using password: YES) 这个错误的,后面又根据某篇文章操作导致MySQL服务无法启动。
我使用的是mysql版本是 MySQL8.0.17.0,电脑是win10系统。
前提(注意事项)
1. 配置好环境变量,在系统变量Path里面添加C:\Program Files\MySQL\MySQL Server 8.0\bin;(我的MySQL安装目录在C盘)。
2. 以管理员身份运行命令提示符。
3. 若出现这个错误:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061),进入bin文件夹,cd C:\Program Files\MySQL\MySQL Server 8.0\bin
,输入命令:mysqld --install
。需要删除mysqld时输入命令:mysqld --remove
。
4. 很重要的一点!。我的MySQL安装目录,也就是C:\Program Files\MySQL里面是没有my.ini这个配置文件的,而这个配置文件放在C盘下隐藏的文件夹ProgramData中,路径为:C:\ProgramData\MySQL\MySQL Server 8.0\,你需要把这个配置文件复制到 C:\Program Files\MySQL\MySQL Server 8.0\ 目录下。
一.MySQL服务无法启动
输入命令net start mysql,但是结果是MySQL服务无法启动。
第一种情况
提取关键信息,意思是没有存放数据库数据的data文件夹。也就是说需要在C:\Program Files\MySQL\MySQL Server 8.0\目录下创建一个名为data的文件夹。但是不能自己手动创建。
方法: 首先修改my.ini配置文件里面的datadir路径:datadir=C:/Program Files/MySQL/MySQL Server 8.0/data
;然后在命令行窗口输入命令:mysqld --initialize --user=mysql --console
我是使用这个方法初始化的,网上也有其他大同小异的做法。接下来你可能服务成功启动了,而运气不好的人(比如我)还是无法启动,但是仔细看报错,报错信息已经改变了。
ps. 查看控制台信息的方法是输入命令:mysqld --console
第二种情况
提取关键信息,意思是数据库端口号被其他进程占用了。可能是我们刚刚启动或初始化多次,之前的进程还占用着这个端口号。
方法: 关闭占用这个端口号的进程。https://jingyan.baidu.com/article/86112f13a934f92737978787.html。根据这个链接里面的方法就能解决。
此时,可能你已经能成功启动了,我也成功了,但是之后又根据某篇文章,出现了另一个错误。
第三种情况
这个有点难解释。
方法: 1、打开任务管理器终止mysqld进程; 2、打开mysql安装目录的data文件夹,删除以下2个文件:ib_logfile0和ib_logfile1。具体解决参考https://blog.****.net/u012465296/article/details/71157286。
第四种情况
这种情况的出现是和在下面修改root密码的情景下出现的。
方法: 在配置文件my.ini 中加入一句:shared-memory
。具体我是加在skip-grant-tables
这句话下面。下面会讲到。
总结: 其实出现MySQL服务无法启动这种情况,主要是看看报错信息,具体情况具体分析。
二.无权限修改root密码
上面提到过,输入密码时报错: Access denied for user ‘root’@‘localhost’ (using password: YES) ;而不输入密码时,又报错Access denied for user ‘root’@‘localhost’ (using password: NO)。要想重置密码,需要先登录MySQL服务端,再进行重置密码操作。
方法: 在配置文件my.ini [mysqld]下加入两句话:skip-grant-tables
和shared-memory
。跳过权限表的认证。
然后再次登录,登录时不需要输入密码,直接回车跳过。
下一步输入命令:use mysql
然后输入命令:FLUSH PRIVILEGES;
刷新权限。
然后开始输入修改密码命令。尝试过几篇文章的修改密码语句都不太行,最后终于找到能成功修改密码的语法:ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
句中’123456’即为新的密码。
最后删除my.ini 文件下加入的跳过权限认证的那两句话,再重新登录一次mysql,输入重置后的密码即可验证。
那么到这里就跳出坑了,遇到问题时,上网多找找答案,会找到解决办法的。