向mysql中插入数据时出现ERROR 1054 (42S22): Unknown column ‘password‘ in ‘field list‘

MySQL 5.7密码修改:从password到authentication_string
本文介绍了如何在MySQL 5.7中更新root用户的密码,由于password字段已被移除,需使用authentication_string替换。步骤包括临时禁用授权表、直接登录数据库、更新user表并重启服务。

打印mysql语句出来发现错误,下次直接打印sql语句。
新安装的MySQL5.7,登录时提示密码错误,安装的时候并没有更改密码,后来通过免密码登录的方式更改密码,输入update mysql.user  set password=password('root') where user='root'时提示ERROR 1054 (42S22): Unknown column 'password' in 'field list',原来是mysql数据库下已经没有password这个字段了,password字段改成了
authentication_string
 所以更改语句替换为update mysql.user set authentication_string=password('root') where user='root' ;即可

 我的系统版本如下:

 
 

 完整的更改MySQL密码的方式如下:

 1、vim /etc/my.cnf 加入skip-grant-tables

 
 

 2、重启MySQL, /etc/init.d/mysqld restart 

 
 

 3、终端输入 mysql 直接登录MySQL数据库,然后use mysql

 
 

 4、update mysql.user set authentication_string=password('root') where user='root' ;

 
 

 
 

 mysql5.7更改密码应该采用命令  ALTER USER 'root'@'localhost'IDENTIFIED BY '********'其中密码的命名规则有所改变,详见

 http://blog.youkuaiyun.com/u010603691/article/details/50541979
 

 5、编辑my.cnf文件删掉skip-grant-tables 这一行,然后重启MySQL,/etc/init.d/mysqld restart,否则MySQL仍能免密码登录

 6、mysql -u root -p

 然后输入密码即可登录MySQL数据库

 
————————————————
版权声明:本文为优快云博主「剑侠365」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/u010603691/article/details/50379282

### 错误原因分析 错误 `ERROR 1054 (42S22): Unknown column 'password' in 'field list'` 通常出现在尝试对 `mysql.user` 表进行操作,使用了不存在的字段名 `password`。在 MySQL 5.7.6 及以上版本中,`user` 表中存储用户密码的字段名称已经从 `password` 更改为 `authentication_string`。如果仍然使用旧版本的命令,就会导致此错误[^4]。 此外,该错误也可能出现在创建用户插入语句中,如果尝试插入到 `password` 字段而该字段并不存在,也会触发此错误[^3]。 --- ### 解决方法 #### 1. 修改 MySQL 用户密码 如果你的目标是修改 MySQL 用户(如 `root`)的密码,并且遇到此错误,可以按照以下步骤操作: ##### 步骤一:跳过权限验证启动 MySQL 以管理员身份打开命令行工具,执行以下命令来停止 MySQL 服务: ```bash net stop mysql ``` 然后使用以下命令跳过权限验证启动 MySQL: ```bash mysqld --skip-grant-tables ``` 再打开另一个命令行窗口,直接输入以下命令登录 MySQL: ```bash mysql ``` ##### 步骤二:修改密码 进入 MySQL 后,执行以下命令切换到 `mysql` 数据库: ```sql use mysql; ``` 然后根据你的 MySQL 版本执行以下命令之一: - **MySQL 5.7.6 之前版本**: ```sql update user set password = password('新密码') where user = 'root'; ``` - **MySQL 5.7.6 及以上版本**: ```sql update user set authentication_string = password('新密码') where user = 'root'; ``` ##### 步骤三:刷新权限并重启服务 执行以下命令刷新权限: ```sql flush privileges; ``` 退出 MySQL,关闭之前打开的两个命令行窗口,重新以管理员身份打开命令行并启动 MySQL 服务: ```bash net start mysql ``` --- #### 2. 创建用户避免错误 如果你在创建用户遇到此错误,请避免直接插入 `mysql.user` 表。推荐使用标准的 SQL 命令来创建用户和授权: ```sql CREATE USER '新用户'@'主机名' IDENTIFIED BY '密码'; GRANT 权限类型 ON 数据库名.表名 TO '用户'@'主机名'; FLUSH PRIVILEGES; ``` 例如: ```sql CREATE USER 'clover'@'localhost' IDENTIFIED BY 'clover123'; GRANT SELECT, INSERT, UPDATE ON *.* TO 'clover'@'localhost'; FLUSH PRIVILEGES; ``` 这种方式可以避免直接操作 `user` 表带来的字段不匹配问题[^3]。 --- #### 3. 数据库表字段确认 如果你需要操作 `mysql.user` 表,请先查看该表的结构,以确认当前 MySQL 版本中支持的字段名称: ```sql DESCRIBE mysql.user; ``` 此命令将列出所有字段,包括 `authentication_string` 和其他权限字段。根据实际字段名称编写 SQL 语句,避免使用已弃用的字段名 `password`。 --- ### 总结 此错误的核心原因是字段名称 `password` 在较新版本的 MySQL 中已被弃用。解决方法包括: - 使用正确的字段名 `authentication_string` 进行密码更新。 - 使用 `CREATE USER` 和 `GRANT` 命令来创建用户和授权,而不是直接操作 `mysql.user` 表。 - 如果忘记密码,可以通过跳过权限验证的方式登录并修改密码[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值