问题由来
在一次对mysql用户权限进行管理时不慎将root的权限删除,由于是新手小白并不了解root权限是最高权限,这就导致在后来的项目构建连接数据库时,由于权限缺失导致无法连接。
缺失权限而导致的报错和常见报错
ERROR 1044 (42000): Access denied for user ‘root’@‘%’ to database ‘mysql’;
ERROR 1045 (28000):Access denied for user ‘root’@‘localhost’ (using password: YES);
ERROR 1046 (3D000): No database selected;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that ;
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061);
报错解析
1044 -->mysql账号远程连接mysql服务器时没有充足的权限;
1045 -->用户root的访问被拒绝(分两种情况 第一种是你使用的登录密码错误 第二种是你密码正确但是没有权限所以被拒绝 )
本人就是第二种原因;
1046 -->创建表未选择对应的数据库;这里的原因就是你在使用时没有权限,导致数据库无法连接;
1064 -->MySQL的语法错误(常见错误)–> 检查一下语法; 这里补充一个容易忽略的语法错误:mysqld-nt --skip-grant-tables 正确语法应该是mysqld -nt --skip-grant-tables (mysqld和-nt间有一个空格,网上绝大部分的命令都是连在一起的这也就导致使用时报错。
2003 -->电脑的MySQL服务没有开启,导致使用navicat连接时无法进入 -->解决办法就是打开任务管理器->找到 ‘服务’->下拉找到MySQL和mysql80(本人使用的是80版本),然后右键选择启动服务。
具体解决办法
先关闭mysql的服务,可以选择通过命令行关闭,也可以选择手动通过任务管理器关闭。
1.命令行关闭方式:
进入你的mysql的安装位置目录找到mysql server下的bin目录,在bin目录里面空白地方,按住shift键并右击选择Open cmd here,如果你的弹窗没有显示这个选项,可以进行如下操作,先新建一个记事本:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenCmdHere]
@="在此处打开命令行窗口"
"Extended"=""
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenCmdHere\command]
@="PowerShell -windowstyle hidden -Command \"Start-Process cmd.exe -ArgumentList '/s,/k, pushd,%V' -Verb RunAs\""
然后保存到任意一个地方就行(本人报存到了c盘用户下),然后更改文件的格式改为reg形式。此处参考右键加shift打开管理员命令提示符
完成上述操作后,你会进入如下窗口
这里提一个注意点,终端管理员和管理员有区别,我们打开的界面应该如上,如有不一致那就是步骤出错了。
进入之后输入
mysqld --console --skip-grant-tables --shared-memory然后窗口会进行加载,等加载完后会卡在一个位置不动,这时我们在新打开一个窗口,还是如上的方法在bin目录下进行,然后不要输入密码,直接 输入 mysql 然后,成功进入后,输入
UPDATE mysql.user SET Grant_priv=‘Y’, Super_priv=‘Y’ WHERE User=‘root’;
然后再输入
FLUSH PRIVILEGES;
继续输入
GRANT ALL ON . TO ‘root’@‘localhost’;(这里有的双引号是%,有的是localhost,原因是选择连接方式不同,localhost是本地练级,%是既可以远程也可以本地连接)
接着输入
FLUSH PRIVILEGES;
最后退出当前页面 然后在上一个页面同时按住ctrl和c.
然后重启没有mysql服务可以选择任务管理器方式,或则在命令行里输入 net start mysql;
最后你在进入mysql时登录用户的所有权限就全都恢复了。
总结
本人的惨痛经历希望大家引以为戒,同时感谢你带你进来并阅读此篇文章,希望能有所帮助,祝朋友你的问题可以成功解决,同时告诉各位,遇到问题别担心,总会解决的,只是时间问题,而解决问题对我们程序人员来说何尝不是一种快乐。
文章在这里参考了如下作者的内容:
mysql8.0恢复root权限