環境

Ubuntu 24.04

MySQL 8.0.40

操作方法

將 MySQL 重新啟動為無需密碼的維護狀態

首先,我們得修改 MySQL 系統設定檔

檔案位置在 /etc/mysql/my.cnf,在 [mysqld] 的段落中,加入以下資料

[mysqld]
skip-grant-tables

然後,重新啟動 mysql

sudo systemctl restart mysql

將管理員 root 帳號設為無需密碼

此時,MySQL 伺服器會以怱略權限認證的方式啟動,我們可以使用 mysql 指令,以不認證的方式,直接本機登入 MySQL 伺服器。

mysql

然後在 MySQL 客戶端,輸入以下指令

use mysql;
update user set authentication_string = '' where user = 'root';
FLUSH PRIVILEGES;
EXIT

此時,管理員帳號 root 會被我們重新設定為無需密碼。

將 MySQL 伺服器,切換為一般模式啟動

修改 /etc/mysql/my.cnf,將原來 的 skip-grant-tables 加上註解

[mysqld]
# skip-grant-tables

然後重新啟重 MySQL 伺服器

sudo systemctl restart mysql

修改 root 密碼

正常啟動 MySQL 後,在 MySQL 客戶端,以 root 進行無密碼登入

mysql -u root 

登入後,使用以下指令,設定正式的 root 密碼了

use mysql;

ALTER USER root@localhost IDENTIFIED WITH caching_sha2_password BY '你的密碼';

FLUSH PRIVILEGES;
EXIT

參考資料

How can I reset my MySQL root password in MySQL 8.0.36 on Red Hat 8 if ‘mysqld_safe’ is gone?

Last modified: 2024-12-12

Author

Comments

Write a Reply or Comment

Your email address will not be published.