×

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

96
Dreamsong
2017.06.08 10:39* 字数 455

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

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

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

解决方法

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

[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命令行,输入

net stop mysql

再输入

net start mysql

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


MySQL重启动

3.在命令行内输入

mysql -u root -p

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

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

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

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

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

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

提示成功后输入

msyql>FLUSH PRIVILEGES; 

最后退出,输入

mysql>quit

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

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

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

这种问题的解决办法为

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

这样便可解决。

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

Tech
Web note ad 1