MySQL:ERROR 1045 (28000)详解

1.问题说明

开源项目完工,需要做数据库对接,装了一个mysql 5.7数据库,因为不想占据电脑进程,手动终止了mysqld,终止以后在本地DOS登陆不上去,报错如下

mysql UF语句 mysql -u -p -s_mysql

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”,保存并关闭文件。

mysql UF语句 mysql -u -p -s_数据库_02


mysql UF语句 mysql -u -p -s_sql_03

2,重启MySQL服务。

mysql UF语句 mysql -u -p -s_经验分享_04

3,通过命令行进入MySQL的BIN目录,输入“mysql -u root -p”(不输入密码),按下两个回车即可进入数据库(最好用管理员运行终端)。

mysql UF语句 mysql -u -p -s_sql_05

4,执行“use mysql;”,进入mysql数据库。

mysql UF语句 mysql -u -p -s_mysql_06

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

mysql UF语句 mysql -u -p -s_mysql UF语句_07

6,予任何主机访问数据的权限

MySQL>FLUSH PRIVILEGES

3.完美解决

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

mysql UF语句 mysql -u -p -s_mysql_08

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; 检查一下用户表里的内容