mysql 系列错误解决
参考文章来源
https://segmentfault.com/a/1190000015678751
https://blog.csdn.net/Tong_zhi/article/details/84716210
https://blog.csdn.net/qq_32786873/article/details/79225039
https://blog.csdn.net/chen97_08/article/details/81484286
在连接数据库时,有Mysql报错:MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
于是在cmd下登录mysql也出现了同样的错误,所以得出结论:不是代码的问题,可能是配置环境的问题
搜寻阵子后找到了解决方法
(配置为window10,MySQL Server 8.0)
解决方法:
一.编辑my.ini文件
5.7以后的版本my.ini配置文件的目录发生了改变
放在了C:\ProgramData\MySQL\MySQL Server 8.0之中
用Notepad打开后,在[mysqld]下加入skip-grant-tables
,保存退出
二.重启MySQL
进入cmd命令行,先后输入
net stop mysql
net start mysql
(如果拒绝访问的话请以管理员身份运行cmd,文末参考资料有教程)
三.登录
这时cmd中输入mysql -u root -p
就不需要密码登录了,出现password直接回车进入
但操作会受到限制,因为没有权限
四.重设密码
1.进入mysql数据库:
mysql>use mysql;
2.为root用户设置新密码
mysql> update user set password=password("这里写新密码") where user="root"
1. 接着输入:select host, user, authentication_string, plugin from user;
注意:该命令可以查看root用户对应及其他用户的信息,此时root用户对应的authentication_string是为空的,如果不为空则使用命令 update user set authentication_string='' where user='root';需要注意的是在8.0 版本之后MySQL的password函数设置密码已经被取消,所以,update mysql.user set password='newpassword' where user='root'; 和 update mysql.user set password=PASSWORD('newpassword') where User='root';这两条命令已经不起作用了。
2.输入命令: alter user 'root'@'localhost' identified by 'newpassword'; 设置密码
3.刷新数据库
mysql>flush privileges;
4.退出mysql
mysql> quit
五.重新编辑my.ini
把刚才加入的“skip-grant-tables”去掉,再重启mysql
启动MySQL报错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
Mysql服务需要手动安装Mysql服务,安装命令为mysqld -install,由于本机中已经安装了mysql服务,所以有如下提示The service already exists!