本文為其它文章的一部份
0x00 前言:
在打算重置mysql密碼的時候發現好多教學都有坑或是太舊了,在踩完坑之後決定記録一下自己驗證過的步驟。
0x01 環境:
- Ubuntu 22.04 LTS
- MySQL 8
(我的環境,可能 mysql > 5.75都能用)
0x02 步驟:
1. 在 /etc/mysql/my.cnf 加入以下內容
[mysqld]
skip-grant-tables
2. 重啟mysql
systemctl restart mysql
3. 無密碼登入mysql
mysql -u root
4. 執行以下查詢,觀察密碼字段的標題是 password 還是 authentication_string
select * from mysql.user where user = 'root';
5. 更改密碼, $1為上一步得到的字段標題(password / authentication_string), $2為新的密碼
*這步有坑,有些教學會使用PASSWORD()函數來生成密碼,但該函數已在mysql 5.7.5 後被移除。
UPDATE mysql.user set $1 = CONCAT('*', UPPER(SHA1(UNHEX(SHA1('$2'))))) where user = 'root' and host = 'localhost';
6. 刷新權限, 退出
FLUSH PRIVILEGES;
exit;
7. (重要)把在步驟一在 /etc/mysql/my.cnf 新增的兩行刪除
8. 重啟mysql
systemctl restart mysql
9. 完成,可以用新密碼登入了
Comments | NOTHING