Windows下Mysql免安装版出现的常见错误(1045,1054,1820)

由于有无法抗拒的理由,笔者又重新踏上安装mysql之旅。之前安装MySQL很顺利,这次安装出现了一系列问题,问题的源头是常见的ERROR 1045,最后终于解决了,下面是解决办法。如有不足之处请指出。

由于笔者使用安装的Windows系统,而且用的是MySQL5.7.18的免安装版所以在此只说明Windows平台下MySQL免安装版的问题解决办法。
Windows平台下:
ERROR 1045错误具体显示为

1
ERROR 1045:Access denied for user 'root'@'localhost' (using password:YES)

解决方法

1.在MySQL安装路径下找到my.ini文件,在[mysqld]下添加
skip-grant-tables
添加后显示为

1
2
3
4
5
6
7
8
9
10
11
[client]
port=3306
default-character-set=utf8
[mysqld]
skip-grant-tables
port=3306
character_set_server=utf8
basedir=D:\learn\mysql-5.7.18-winx64
datadir=D:\learn\mysql-5.7.18-winx64\data
[WinMySQLAdmin]
%MYSQL_HOME%\bin\mysqld.exe

表示跳过密码选项。

2.重新启动mysql服务;

这里有两种办法:
(1) 用管理员权限进入windows命令行,输入

1
net stop mysql

再输入

1
net start mysql

即可。
(2) 右击我的电脑>管理>服务和应用程序>服务,找到MySQL服务,点击重新启动即可。如图所示。
MySQL重启动

3.在命令行内输入

1
mysql -u root -p

Enter Password:直接回车即可进入mysql。

1
mysql>use mysql;

1
mysql>update user SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

4.然而在这里又出现ERROR 1054错误:

1
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

后来发现果然是用户表没有password列,取而代之的是authentication_string列,所以此处应该输入

1
mysql>update user set authentication_string = password('MyNewPassword') where user='root';

提示成功后输入

1
msyql>FLUSH PRIVILEGES;

最后退出,输入

1
mysql>quit

5.删除my.ini文件中之前加入的skip-grant-tables,重新启动mysql服务。

6.在输入相关命令便可进入mysql。
但是此时又出现ERROR 1820错误:

1
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

这种问题的解决办法为

1
mysql>SET PASSWORD = PASSWORD('MyNewPassword');

这样便可解决。

这样安装mysql免安装版的一系列问题,让笔者搞了半天,记下来方便你我他,哈哈~

想了解更多关于MySQL的其他知识,可参考笔者的另一篇文章《MySQL入门知识点》

您的支持将鼓励我努力创作!