mysql的密碼放在user許可權表的authentication_string欄位中。user表是MySQL中最重要的一個許可權表,用來記錄允許連線到伺服器的賬號資訊;修改使用者密碼時,實際就是修改user表中authentication_string欄位的值,語法為「SET PASSWORD FOR 'username'@'hostname'=PASSWORD ('新密碼')」。
本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。
mysql的密碼放在user許可權表的authentication_string欄位中。
MySQL user許可權表的使用者列
MySQL 在安裝時會自動建立一個名為 mysql 的資料庫,mysql 資料庫中儲存的都是使用者許可權表。使用者登入以後,MySQL 會根據這些許可權表的內容為每個使用者賦予相應的許可權。
user 表是 MySQL 中最重要的一個許可權表,用來記錄允許連線到伺服器的賬號資訊。需要注意的是,在 user 表裡啟用的所有許可權都是全域性級的,適用於所有資料庫。
user 表中的欄位大致可以分為 4 類,分別是使用者列、許可權列、安全列和資源控制列。
其中使用者列儲存了使用者連線 MySQL 資料庫時需要輸入的資訊。
需要注意的是 MySQL 5.7 版本不再使用 Password 來作為密碼的欄位,而改成了 authentication_string。
MySQL 使用者列如表 1 所示。
欄位名 | 欄位型別 | 是否為空 | 預設值 | 說明 |
---|---|---|---|---|
Host | char(60) | NO | 無 | 主機名 |
User | char(32) | NO | 無 | 使用者名稱 |
authentication_string | text | YES | 無 | 密碼 |
使用者登入時,如果這 3 個欄位同時匹配,MySQL 資料庫系統才會允許其登入。建立新使用者時,也是設定這 3 個欄位的值。修改使用者密碼時,實際就是修改 user 表的 authentication_string 欄位的值。因此,這 3 個欄位決定了使用者能否登入。
使用SET語句修改普通使用者的密碼
在 MySQL 中,只有 root 使用者可以通過更新 MySQL 資料庫來更改密碼。使用 root 使用者登入到 MySQL 伺服器後,可以使用 SET 語句來修改普通使用者密碼。語法格式如下:
SET PASSWORD FOR 'username'@'hostname' = PASSWORD ('newpwd');
其中,username 引數是普通使用者的使用者名稱,hostname 引數是普通使用者的主機名,newpwd 是要更改的新密碼。
注意:新密碼必須使用 PASSWORD() 函數來加密,如果不使用 PASSWORD() 加密,也會執行成功,但是使用者會無法登入。
如果是普通使用者修改密碼,可省略 FOR 子句來更改自己的密碼。語法格式如下:
SET PASSWORD = PASSWORD('newpwd');
範例 1
首先建立一個沒有密碼的 testuser 使用者,SQL 語句和執行結果如下:
mysql> CREATE USER 'testuser'@'localhost'; Query OK, 0 rows affected (0.14 sec)
root 使用者登入 MySQL 伺服器後,再使用 SET 語句將 testuser 使用者的密碼修改為「newpwd」,SQL 語句和執行結果如下:
mysql> SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD("newpwd"); Query OK, 0 rows affected, 1 warning (0.01 sec)
由執行結果可以看出,SET 語句執行成功,testuser 使用者的密碼被成功設定為「newpwd」。
下面驗證 testuser 使用者密碼是否修改成功。退出 MySQL 伺服器,使用 testuser 使用者登入,輸入密碼「newpwd」,SQL 語句和執行結果如下:
C:\Users\leovo>mysql -utestuser -p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 5.7.29-log MySQL Community Server (GPL) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
由執行結果可以看出,testuser 使用者登入成功,修改密碼成功。
範例 2
使用 testuser 使用者登入 MySQL 伺服器,再使用 SET 語句將密碼更改為「newpwd1」,SQL 語句和執行結果如下所示:
mysql> SET PASSWORD = PASSWORD('newpwd1'); Query OK, 0 rows affected, 1 warning (0.00 sec)
由執行結果可以看出,修改密碼成功。
【相關推薦:】
以上就是mysql的密碼放在哪裡的詳細內容,更多請關注TW511.COM其它相關文章!