发生这个问题的背景:
在删除一些不用的数据库,然后点别的库突然报一些之前写sql时的错误,然后我就把mysql服务关了,当再点击启动时就报下边这个错了。
又试了重启电脑仍然没有解决,于是开始百度这个错误
搜到的解决方法一:
改mysql安装目录下的my.ini文件,将default-storage-engine=InnoDB中的InnoDB改成MyISAM,
改了之后还是不可以。
解决方法二:看ini文件的Path to the database root下配置的目录,Data路径是不是正确的
我这个就是正确的,所以还是没解决。然后找到一个提示去看windows系统日志
右击此电脑->选择管理
在应用程序中找到MYSQL
看到这个错误:Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
直到这才是找到了真正的报错。
然后去百度了这个,说是在data目录下没有mysql这个库了,我一看还真是。。。
一想,刚才删没用的库的时候不小心把mysql库也删了。。。
所以现在需要把mysql库弄回来,有两个办法,一是重装MYSQL,二是找一个mysql库直接复制到data目录下
显示找一个mysql库直接复制方便,于是我去mysql官网下载了一个和我电脑相同版本的mysql压缩包
直接把这个mysql文件夹复制到我的mysql安装目录的data目录下。然后再去启动mysql服务,果然,成功启动了!然后用navicat去连接数据库时又报错
意思就是使用了错误的密码,我一想这应该是用了新的mysql库,之前的数据不在了,要先解决这个密码错误问题,还是在MYSQL的安装目录下的my.ini文件操作一下,加一个语句来跳过密码校验
在【mysqld】下加:skip-grant-tables
这样重启mysql服务之后就可以直接登陆了。
然后通过命令行进入mysql
在cmd中输入mysql -u root -p
登陆mysql
出现password直接回车就行
再进入mysql库:use mysql
接下来就是给root用户重置密码update user set password=password("123") where user="root";
其中的123就是我设置的新密码
然后使用命令flush privileges
来刷新一下。
这个命令的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在”不重启MySQL服务”的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。
现在再去吧my.ini添加那条语句删除,然后重新连接数据库,就正常了。
至此,这个因为大意导致的错误算是解决了!