如何使用 MySQL v5.7 更改 MySQL 'root' 密碼?

如何使用 MySQL v5.7 更改 MySQL 'root' 密碼?

當前環境:

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 群集)中正常運作。

停止使用 FLUSH PRIVILEGES

請使用GRANTREVOKESET 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;

畢竟正常。

相關內容