當前環境:
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;
畢竟正常。