当前环境:
mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| innodb_version | 5.7.13 |
| protocol_version | 10 |
| slave_type_conversions | |
| tls_version | TLSv1,TLSv1.1 |
| version | 5.7.13 |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)
密码更改命令用户:
mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
我错过了什么吗?
答案1
在 MySQL 5.7 中,表字段password
中的字段mysql.user
被删除,现在字段名称为authentication_string
。
首先选择数据库:
mysql> use mysql;
然后显示表格:
mysql> show tables;
您将找到该user
表,并查看其字段:
mysql> describe user;
您将意识到没有名为 的字段password
,而是名为 密码的字段authentication_string
。所以,只需这样做:
update user set authentication_string=password('XXXX') where user='root';
根据 @Rui F Ribeiro 的建议,您也可以运行:
mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');
答案2
MySQL修改密码的方法是SET PASSWORD
SET PASSWORD FOR 'root' = PASSWORD('new_password');
看MySQL 5.7 参考手册 / ... / SET PASSWORD 语法
SET PASSWORD 语句为 MySQL 用户帐户分配密码,指定为明文(未加密)或加密值:
'auth_string' represents a cleartext password. 'hash_string' represents an encrypted password.
Rahul 接受的答案显示了如何使用DML
语句更新密码。
update user set authentication_string=password('XXXX') where user='root';
警告:这不是官方且受支持的方式。如果您不知道自己在做什么,可能会引起麻烦。别忘了FLUSH PRIVILEGES
。
对于大多数操作,例如创建用户、更改其权限或更改其密码,您将需要使用高级语句。它们不仅更容易使用,兼容更多的MySQL版本,而且还能防止你犯错误(当然,记得设置“NO_AUTO_CREATE_USER”sql模式)。它们甚至通常可以在不利于 MyISAM 的环境(例如 Galera 集群)中正常工作。
请使用GRANT
、REVOKE
、SET PASSWORD
、 orRENAME USER
而不是直接的 DML 语句。
更新: SET PASSWORD ... = PASSWORD('auth_string') 语法是自 MySQL 5.7.6 起已弃用并将在未来的 MySQL 版本中删除。
答案3
mysqladmin -u user-name password -p "oldpassword" "newpass"
如果你可以登录然后尝试这""
不会工作尝试''
单引号
update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';
答案4
对于这个问题,我使用了一个简单粗暴的方法,将字段名重命名为password,出现这种情况的原因是我使用mac navicat premium软件在可视化操作中出现错误:Unknown column 'password' in 'field List',软件本身使用密码,让我无法轻易操作。因此,我进入数据库命令行,运行
Use mysql;
然后修改字段名称:
ALTER TABLE user CHANGE authentication_string password text;
毕竟正常。