Windows下MySql5.7.17更改密码时出错“ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’"

今天在windows下配置了Mysql5.7.17,在修改密码的过程中遇到了错误提示ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’,查找了很多解决方案,下面的方法完美的解决了我的问题:
1. 配置环境变量Path:将mysql的bin所在路径添加到Path中
2. 把安装目录的my-default.ini文件删掉,新建一个my.ini,添加下面的代码到my.ini文件中

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
skip-grant-tables
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir=D:\MySql\mysql-5.7.17-winx64\mysql-5.7.17-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\MySql\mysql-5.7.17-winx64\mysql-5.7.17-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB 

上面的目录请参考自己的文件路径。
3. my.ini文件中的skip-grant-tables使登录直接跨过了安全检查。接着在cmd下输入
mysql进入mysql>,在mysql>下输入UPDATE mysql.user set password=PASSWORD('newpassword') WHERE User='root'; 进行密码更改。但在此版本的mysql中,会报错,错误如下ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’;这是因为原本的password字段替换成了authentication_string,如果出现这个错误提示,就需要使用下列方式:update mysql.user set authentication_string=password('newpassword') where user='root';
4. 此时已经可以用新密码登录了,然后将my.ini文件中的skip-grant-tables注释掉,在cmd下重启mysql服务,可以用net stop mysql先停止服务,再net start mysql启动服务来重启,重启完成,输入mysql -u root -p来进行登录,over。

你可能感兴趣的:(MySql)