MYSQL忘記密碼-重置密碼
阿新 • • 發佈:2021-07-15
問題 -忘記密碼:
登入Mysql,密碼錯誤的時候出現錯誤ERROR 1045 (28000)
mysql -u root -p
Enter Password > 'password'
錯誤:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
密碼忘記了,這樣來重置。
解決方法 - 重置密碼:
- 修改my.cnf配置檔案(預設位置:/etc/my.cnf):
- 在[mysqld]下新增skip-grant-tables
- 重啟mysql服務
- systemctl restart mysql
- 登入mysql
mysql -u root -p
不用輸入密碼,直接回車即可登入成功
- 修改root的密碼
MySQL 5.7 的版本,user表中沒有password欄位,通過下面的方法來重置root密碼
use mysql
update user set authentication_string = password(“root”) where user = “root”;
Mysql 5.7.9以後廢棄了password欄位和password()函式,authentication_string欄位表示使用者密碼,只能是mysql加密後的41位字串密碼。通過下面方法來重置。
- 先檢查root對應的host
mysql> select user,host from user; +---------------+-----------+ | user | host | +---------------+-----------+ | root | localhost | | mysql.session | localhost | | mysql.sys | localhost | | test | % | +---------------+-----------+ 5 rows in set (0.00 sec)
- 修改root密碼:
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
MySql8.0開始修改密碼又有了變化,user表中加了欄位authentication_string,修改密碼前要先檢查authentication_string是否為空
- 如果authentication_string不為空
update user set authentication_string='' where user='root';--將欄位置為空
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpwd';--修改密碼為rootpwd
- 如果authentication_string為空,直接修改
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpwd';--修改密碼為rootpwd
如果遇到一下錯誤
mysql> ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpwd';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
則先執行
flush privileges;
然後再執行
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpwd';
親測修改成功