MySQL:ERROR 1045 (28000)详解
1.问题说明
开源项目完工,需要做数据库对接,装了一个mysql 5.7数据库,因为不想占据电脑进程,手动终止了mysqld,终止以后在本地DOS登陆不上去,报错如下
C:\Users\Administrator>mysql -uroot -p
Enter password: ******
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
网上找了各种方法,发现千篇一律雷同,但都不能解决根本问题,自己参考了23篇博客尝试了各类方法并对其中好的方法提炼改变,抱着开源的死刑分享给大家,希望能帮到有需要的小伙伴
2.解决步骤
1,打开MySQL目录下的my.ini(路径如下图)文件(注:各类版本路径不同,博主5.7系列仅供参考),在文件的mysqld(如下下图所示)后方添加一行“skip-grant-tables”,保存并关闭文件。
2,重启MySQL服务。
3,通过命令行进入MySQL的BIN目录,输入“mysql -u root -p”(不输入密码),按下两个回车即可进入数据库(最好用管理员运行终端)。
4,执行“use mysql;”,进入mysql数据库。
5,修改数据库
MySQL>update user set host = '%' where user = 'root';
MySQL>select host, user from user;
MySQL>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION
6,予任何主机访问数据的权限
MySQL>FLUSH PRIVILEGES
3.完美解决
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
4.二类解决
申明:方法二博主并未测试,放在这里供有兴趣的小伙伴动手操作,遇到问题欢迎留言咨询
1、在控制台执行 mysql -u root -p mysql,系统提示输入数据库root用户的密码,输入完成后即进入mysql控制台,这个命令的第一个mysql是执行命令,第二个mysql是系统数据名称,不一样的。
2、在mysql控制台执行
GRANT ALL PRIVILEGES ON *.* TO ‘root'@'%' IDENTIFIED BY ‘MyPassword' WITH GRANT OPTION;
3、在mysql控制台执行命令中的 ‘root’@’%’ 可以这样理解: root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,你也可替换成任意其它用户名或指定唯一的IP地址;'MyPassword’是给授权用户指定的登录数据库的密码;另外需要说明一点的是我这里的都是授权所有权限,可以指定部分权限,GRANT具体操作详情见官方doc:http://dev.mysql.com/doc/refman/5.1/en/grant.html
4、不放心的话可以在mysql控制台执行 select host, user from user; 检查一下用户表里的内容