MySQL 5.7的user表中root用戶的的密碼修改

當使用update user set passsword=password("123456") where user="root";修改root密碼時會提示如下錯誤:

 ERROR 1054 (42S22): Unknown column 'passsword' in 'field list'

這是因爲在MySQL 5.7 password字段已從mysql.user表中刪除,新的字段名是“authenticalion_string”.

可使用use mysql; desc user;查看如下:

+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| File_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| References_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N                     |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N                     |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N                     |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N                     |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |                       |       |
| ssl_cipher             | blob                              | NO   |     | NULL                  |       |
| x509_issuer            | blob                              | NO   |     | NULL                  |       |
| x509_subject           | blob                              | NO   |     | NULL                  |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0                     |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0                     |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0                     |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0                     |       |
| plugin                 | char(64)                          | NO   |     | mysql_native_password |       |
| authentication_string  | text                              | YES  |     | NULL                  |       |
| password_expired       | enum('N','Y')                     | NO   |     | N                     |       |
| password_last_changed  | timestamp                         | YES  |     | NULL                  |       |
| password_lifetime      | smallint(5) unsigned              | YES  |     | NULL                  |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.00 sec)

方法1: 用SET PASSWORD命令 
首先登錄MySQL。 
格式:mysql> set authentication_stringfor 用戶名@localhost = password('新密碼'); 
例子:mysql> set authentication_stringfor root@localhost = password('123'); 

方法2:用mysqladmin 
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼 
例子:mysqladmin -uroot -p123456 password 123 

方法3:用UPDATE直接編輯user表 
首先登錄MySQL。 
mysql> use mysql; 
mysql> update user set authentication_string=password('123') where user='root' and host='localhost'; 
mysql> flush privileges; 

方法4:在忘記root密碼的時候,可以這樣 
以windows爲例: 
1. 關閉正在運行的MySQL服務。 
2. 打開DOS窗口,轉到mysql\bin目錄。 
3. 輸入mysqld --skip-grant-tables 回車。--skip-grant-tables 的意思是啓動MySQL服務的時候跳過權限表認證。 
4. 再開一個DOS窗口(因爲剛纔那個DOS窗口已經不能動了),轉到mysql\bin目錄。 
5. 輸入mysql回車,如果成功,將出現MySQL提示符 >。 
6. 連接權限數據庫: use mysql; 。 
6. 改密碼:update user set authentication_string=password("123") where user="root";(別忘了最後加分號) 。 
7. 刷新權限(必須步驟):flush privileges; 。 
8. 退出 quit。 
9. 註銷系統,再進入,使用用戶名root和剛纔設置的新密碼123登錄。

我用的是方法3,有問題請見原文:

mysql如何修改root用戶的密碼 - 鋒齊葉落 - 博客園  https://www.cnblogs.com/qianzf/p/7089197.html


作者:hs_2017 
來源:CSDN 
原文:https://blog.csdn.net/hs_2017/article/details/79165762 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章