本篇介紹如何在 CentOS Linux 中重新設定 MySQL/MariaDB 資料庫的 root 管理者密碼。

MySQL/MariaDB 資料庫的 root 管理者密碼跟 Linux 系統的 root 密碼是分開的,通常因為安全性,也不會設成一樣的密碼,由於 MySQL/MariaDB 的 root 密碼不常用,時間一久就忘記了。


以下介紹如在 CentOS Linux 中以以安全模式啟動 MySQL/MariaDB 資料庫,然後重新設定資料庫的 root 管理者密碼。
Step 1
停止系統的 MariaDB(或 MySQL)服務。

# 停止 MariaDB 服務
sudo systemctl stop mariadb

# 停止 MySQL 服務
sudo systemctl stop mysql

Step 2
在啟動 MySQL 或 MariaDB 時,若跳過 trant table 的話,就可以在不用密碼的情況下以資料庫 root 權限存取資料庫裡面的資料,這樣我們就可以重設密碼。

不過以這種模式啟動資料庫會有風險,所以建議關閉網路功能(networking),以防止外部的使用者連入。

# 跳過 trant table 與 networking 啟動 MySQL/MariaDB
sudo mysqld_safe --skip-grant-tables --skip-networking &

Step 3
使用 root 帳號連線至 MySQL/MariaDB 資料庫:

# 以 root 連線至 MySQL/MariaDB 資料庫
mysql -u root

Step 4
讓資料庫載入 grant tables:

-- 載入 grant tables
FLUSH PRIVILEGES;

Step 5
變更 root 密碼:

-- 重設 root 密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

若是 MySQL 5.7.5 或 MariaDB 10.1.20 以前的版本,則要改用舊的指令:

-- 重設 root 密碼(舊版指令)
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

更改完成後,按下 Ctrl + d(或執行 exit 指令)離開。

Step 6
停止剛剛手動啟動的 MariaDB(或 MySQL)資料庫。

# 停止 MariaDB
sudo kill `cat /var/run/mariadb/mariadb.pid`

# 停止 MySQL
sudo kill `cat /var/run/mysqld/mysqld.pid`

Step 7
啟動系統的 MariaDB(或 MySQL)服務。

# 啟動 MariaDB 服務
sudo systemctl start mariadb

# 啟動 MySQL 服務
sudo systemctl start mysql

Step 8
使用 root 與新密碼進入 MySQL/MariaDB 資料庫。

# 使用新密碼進入資料庫
mysql -u root -p

參考資料:DigitalOcean